Menghitung Stickiness (DAU/MAU) di SQL
Blog/Tutorial SQL/Menghitung Stickiness (DAU/MAU) di SQL

Menghitung Stickiness (DAU/MAU) di SQL

BimaBima
·5 Oktober 2026·10 menit baca

Penulis

Bima

Bima

Founder & Data Professional

Bagikan

TL;DR

Stickiness adalah rasio DAU dibagi MAU, biasanya ditulis dalam persen. Di SQL kamu hitung DAU pakai COUNT(DISTINCT user_id) per hari, MAU pakai COUNT(DISTINCT user_id) dalam 30 hari terakhir, lalu bagi keduanya. Rasio 20% artinya rata-rata user aktif 6 hari dari 30 hari.

Stickiness itu rasio DAU dibagi MAU. Di SQL, kamu hitung dua angka aktif pakai COUNT(DISTINCT user_id), terus bagi yang harian sama yang bulanan.

Rasio 20% artinya rata-rata user aktif 6 hari dari 30 hari. Makin tinggi, makin sering orang balik ke produk kamu.

Angka ini murah dihitung tapi sering salah pas praktek. Aku bahas rumusnya, query-nya, dan jebakan yang bikin hasilnya ngaco.

Apa itu stickiness (DAU/MAU)?

Stickiness adalah rasio Daily Active Users dibagi Monthly Active Users, ditulis dalam persen. Dia ngukur seberapa sering user balik dalam sebulan. Kalau nilainya 25%, rata-rata user aktif sekitar 7 sampai 8 hari dari 30 hari terakhir.

DAU itu jumlah user unik yang aktif dalam sehari. MAU itu jumlah user unik yang aktif dalam 30 hari. Definisi lengkap keduanya ada di glossary DAU dan glossary MAU.

Gimana cara hitung DAU dan MAU di SQL?

Pakai COUNT(DISTINCT user_id) buat dua-duanya. Buat DAU, kelompokkan per tanggal pakai GROUP BY. Buat MAU, hitung user unik dalam 30 hari terakhir tanpa dipecah per hari. Kuncinya DISTINCT, biar satu user yang buka 10 kali tetap dihitung satu.

Anggap kamu punya tabel events dengan kolom user_id dan event_date. DAU per hari:

SELECT event_date,
       COUNT(DISTINCT user_id) AS dau
FROM events
GROUP BY event_date
ORDER BY event_date;

MAU buat satu bulan tertentu:

SELECT COUNT(DISTINCT user_id) AS mau
FROM events
WHERE event_date >= '2026-09-01'
  AND event_date < '2026-10-01';

Tanpa DISTINCT, angkanya bakal jauh lebih besar dari user asli. Ini penyebab nomor satu stickiness yang aneh.

Gimana rumus stickiness di SQL?

Bagi DAU dengan MAU, lalu kali 100 buat jadiin persen. Pakai ROUND biar hasilnya rapi. Kalikan pembilangnya dengan 100.0 biar SQL nggak motong desimal jadi nol.

SELECT ROUND(100.0 * dau_value / mau_value, 1) AS stickiness_pct;

Kalau DAU rata-rata 1.200 dan MAU 6.000, stickiness-nya 1200 / 6000 = 0,20 atau 20%. Artinya user tipikal aktif 6 hari dalam sebulan.

Gimana hitung stickiness harian yang bergerak?

Buat tren, kamu butuh DAU tiap hari dibagi MAU rolling 30 hari di hari yang sama. Pakai dua CTE, satu buat DAU harian, satu buat MAU rolling, lalu gabung pakai JOIN. Ini query yang aku pakai buat dashboard mingguan.

WITH dau AS (
  SELECT event_date,
         COUNT(DISTINCT user_id) AS daily_active
  FROM events
  GROUP BY event_date
),
mau AS (
  SELECT d.event_date,
         COUNT(DISTINCT e.user_id) AS monthly_active
  FROM events e
  JOIN (SELECT DISTINCT event_date FROM events) d
    ON e.event_date > d.event_date - INTERVAL '30 day'
   AND e.event_date <= d.event_date
  GROUP BY d.event_date
)
SELECT dau.event_date,
       dau.daily_active,
       mau.monthly_active,
       ROUND(100.0 * dau.daily_active / mau.monthly_active, 1) AS stickiness_pct
FROM dau
JOIN mau ON dau.event_date = mau.event_date
ORDER BY dau.event_date;

MAU di sini dihitung ulang tiap hari buat 30 hari ke belakang. Jadi kamu dapat garis stickiness yang gerak, bukan cuma satu angka. Kalau baru belajar CTE, ada penjelasannya di glossary CTE.

Contoh kasus: aplikasi kasir UMKM

Aku pernah ngecek data aplikasi kasir buat warung dan toko kecil. Tabel event nyimpen tiap kali pemilik toko buka aplikasi buat catat transaksi.

Dari 3.400 MAU di bulan September, DAU rata-ratanya 918. Stickiness-nya 918 / 3400 = 27%. Artinya pemilik toko tipikal buka aplikasi sekitar 8 hari dalam sebulan.

MetrikNilai
MAU September3.400
DAU rata-rata918
Stickiness27%
Estimasi hari aktif/user~8 hari

Angka 27% ini menarik. Warung buka tiap hari, tapi banyak yang cuma catat transaksi 2 kali seminggu. Sisanya masih ditulis manual di buku. Itu celah yang jadi bahan rapat produk berikutnya.

Kesalahan umum saat menghitung stickiness

  • Lupa DISTINCT. Tanpa DISTINCT, satu user yang buka banyak kali kehitung berkali-kali. DAU langsung membengkak dan stickiness bisa lewat 100%.
  • Rentang MAU salah. MAU harus 30 hari yang mencakup hari DAU-nya. Kalau bulannya kalender penuh tapi DAU-nya tengah bulan, rasionya jadi timpang.
  • Integer division. dau / mau tanpa 100.0 di SQL sering balikin 0. Kalikan pembilang dengan 100.0 dulu.
  • Nganggep tinggi selalu bagus. Stickiness turun karena MAU naik pesat itu wajar buat produk yang lagi tumbuh. Lihat angka mentahnya, jangan cuma rasio.

FAQ

Fungsi SQL apa yang wajib dipakai?

COUNT(DISTINCT user_id) buat DAU dan MAU. DISTINCT-nya nggak boleh lupa.

Stickiness bagusnya berapa?

Tergantung produk. Aplikasi harian 30% ke atas, e-commerce wajar 10 sampai 20%. Bandingin dengan bulan lalu.

Bedanya sama retention apa?

Stickiness ngukur seberapa sering dalam sebulan. Retention ngukur apakah user balik di periode berikutnya.

Lanjut praktek

Ringkasnya: DAU dan MAU pakai COUNT DISTINCT, stickiness itu DAU dibagi MAU kali 100, dan jangan lupa DISTINCT plus 100.0 biar hasilnya bener.

Mau latihan query window function dan agregasi sampai lancar? Coba modul SQL analitik di NgulikSQL, ada dataset yang bisa kamu pakai buat hitung metrik kayak gini langsung.

Kalau kamu mau lanjut ke metrik retensi, baca cara bikin cohort retention di SQL. Definisi metrik engagement juga dibahas di dokumentasi Amplitude soal DAU/MAU.

Coba Langsung

Mau praktek langsung? Mulai latihan SQL gratis

Latihan interaktif, langsung di browser.

Buka NgulikSQL →
Bagikan:
Bima
Ditulis oleh

Bima

Founder & Data Professional

Founder Ngulik Data. Passionate about making data analysis accessible for everyone.

Artikel terkait

Composite Index di SQL: Cara Kerja dan Urutan Kolom
Tutorial SQL
8 Oktober 2026•8 menit baca

Composite Index di SQL: Cara Kerja dan Urutan Kolom

Composite index itu index atas beberapa kolom sekaligus. Urutan kolomnya nentuin query mana yang kebantu, lewat aturan leftmost prefix.

BimaBima
Menghitung DAU dan MAU dengan SQL
Tutorial SQL
3 Oktober 2026•9 menit baca

Menghitung DAU dan MAU dengan SQL

DAU dan MAU dua metrik wajib buat produk digital. Ini cara hitungnya pakai SQL, lengkap query DISTINCT, per bulan, sampai rasio stickiness.

BimaBima
Membuat Matriks Retensi Cohort dengan SQL
Tutorial SQL
30 September 2026•10 menit baca

Membuat Matriks Retensi Cohort dengan SQL

Pelanggan datang ramai di bulan promo, tapi berapa yang masih belanja tiga bulan kemudian? Matriks retensi cohort jawab itu. Ini cara bikinnya di SQL langkah demi langkah.

BimaBima
Kembali ke Blog
Ngulik Data logoNgulik Data

Platform edukasi data lengkap untuk professionals Indonesia. Belajar SQL, Data Analysis, dan lebih banyak lagi dengan praktek langsung dan feedback real-time.

© 2026 Ngulik Data. Semua hak dilindungi.

TAUTAN
BantuanHargaDatasetBlogAfiliasi
LEGAL
Syarat & KetentuanKebijakan Privasi
Ngulik Data
DatasetLeaderboardBlogStore