Materi
Tabel cohort menaruh satu cohort per baris dan satu periode per kolom, sehingga cohort yang berbeda umur bisa dibandingkan pada periode yang sama. SQLite tidak punya kata kunci PIVOT, jadi setiap kolom periode ditulis sendiri: COUNT(DISTINCT CASE WHEN periode = 1 THEN pelanggan END). CASE tanpa ELSE menghasilkan NULL untuk baris periode lain, dan COUNT mengabaikan NULL, sehingga yang terhitung hanya pelanggan di periode 1.
Contoh di klinik gigi, tabel aktivitas pasien sudah memuat bulan_awal dan periode:
SELECT bulan_awal,
COUNT(DISTINCT pasien_id) AS ukuran,
COUNT(DISTINCT CASE WHEN periode = 1 THEN pasien_id END) AS bulan_1,
COUNT(DISTINCT CASE WHEN periode = 2 THEN pasien_id END) AS bulan_2
FROM aktivitas_pasien
GROUP BY bulan_awal
ORDER BY bulan_awal;Untuk persen, bagi setiap kolom dengan COUNT(DISTINCT pasien_id) pada baris yang sama dan kalikan 100.0. Hasilnya berbentuk segitiga: cohort lama punya banyak kolom berisi, cohort muda hanya beberapa.