Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menjana Julat Tarikh Lengkap dalam MySQL untuk Analisis Pertumbuhan Pengguna, Walaupun dengan Data yang Hilang?

Bagaimana untuk Menjana Julat Tarikh Lengkap dalam MySQL untuk Analisis Pertumbuhan Pengguna, Walaupun dengan Data yang Hilang?

Linda Hamilton
Lepaskan: 2024-12-09 07:15:10
asal
1011 orang telah melayarinya

How to Generate a Complete Date Range in MySQL for User Growth Analysis, Even with Missing Data?

Mendapatkan Semua Tarikh dalam Julat Dalam MySQL, Walaupun Dengan Rekod Hilang

Dalam pangkalan data pengguna, seseorang mungkin menghadapi keperluan untuk mencipta graf menggambarkan pertumbuhan pangkalan pengguna. Pertanyaan biasa yang digunakan ialah:

SELECT DATE(datecreated), count(*) AS number FROM users 
WHERE DATE(datecreated) > '2009-06-21' AND DATE(datecreated) <= DATE(NOW())
GROUP BY DATE(datecreated) ORDER BY datecreated ASC
Salin selepas log masuk

Sementara pertanyaan ini mendapatkan semula maklumat yang diingini, ia meninggalkan tarikh di mana tiada pengguna didaftarkan. Untuk menangani perkara ini, penyelesaian menggunakan kalendar dinamik boleh dilaksanakan. Begini caranya:

select  * from (
select date_add('2003-01-01 00:00:00.000', INTERVAL n5.num*10000+n4.num*1000+n3.num*100+n2.num*10+n1.num DAY ) as date from
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n1,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n2,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n3,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n4,
(select 0 as num
   union all select 1
   union all select 2
   union all select 3
   union all select 4
   union all select 5
   union all select 6
   union all select 7
   union all select 8
   union all select 9) n5
) a
where date >'2011-01-02 00:00:00.000' and date < NOW()
order by date
Salin selepas log masuk

Kalendar dinamik ini menjana tarikh dalam julat yang ditentukan, membenarkan tarikh dengan pangkalan pengguna sifar untuk disertakan dalam keputusan. Dengan melaraskan had tarikh dan menggunakan formula pada struktur data khusus anda, anda boleh menjana graf yang menggambarkan pertumbuhan pangkalan pengguna dengan tepat, walaupun semasa tempoh tidak aktif.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Tarikh Lengkap dalam MySQL untuk Analisis Pertumbuhan Pengguna, Walaupun dengan Data yang Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan