Struktur jadual pangkalan data saya adalah seperti berikut:
Medan ialah ID, NUM1, NUM2, TIME1, TIME2, MONEY.
Saya ingin mengira bilangan ID pada selang 15 minit. Kesannya adalah sama seperti pernyataan sql berikut.
SELECT
sum(CASE when TIME1 >= '2014-02-27 8:00:00' and TIME1 < '2014-02-27 8:15:00' then 1 else 0 end) AS '1',
sum(CASE when TIME1 >= '2014-02-27 8:15:00' AND TIME1 < '2014-02-27 8:30:00' then 1 else 0 end) AS '2',
sum(CASE when TIME1 >= '2014-02-27 8:30:00' AND TIME1 < '2014-02-27 8:45:00' then 1 else 0 end) AS '3',
sum(CASE when TIME1 >= '2014-02-27 8:45:00' AND TIME1 < '2014-02-27 9:00:00' then 1 else 0 end) AS '4',
sum(CASE when TIME1 >= '2014-02-27 9:00:00' and TIME1 < '2014-02-27 9:15:00' then 1 else 0 end) AS '5'
from dealdata;
Tetapi terdapat banyak kod berulang seperti di atas, dan jika saya menukarnya kepada 30 minit, saya perlu membuat banyak perubahan, jadi saya meminta bantuan master SQL untuk melihat sama ada terdapat kaedah yang baik.
—————————————————————————————————————————————————— — ——————————————————————
Terima kasih Comrade arm atas bantuan anda, sekarang saya boleh bertanyakannya
kiraan (id) ialah bilangan orang yang memasuki stesen
Tetapi dalam beberapa tempoh masa, tiada orang yang memasuki stesen langsung, jadi tiada orang dalam beberapa tempoh masa, seperti 5:00 -- 5: 15
Jika anda ingin mengira bilangan orang yang tidak memasuki stesen Tempoh masa selesai hingga 0, apakah yang perlu saya lakukan?
Terima kasih atas jemputan, anda boleh susun secara menegak, seperti berikut
Di mana untuk mengehadkan tempoh masa, bahagikannya mengikut selang masa yang anda perlukan dalam kumpulan mengikut.
Saya tidak tahu mengapa anda mendapat ralat. Ia mungkin berkaitan dengan versi mysql adalah mysql5.6
Hasilnya
Selepas diperiksa, ia berjalan agak laju, kurang daripada 0.3s
Bilangan lajur berubah, jadi banyak pembolehubah ditentukan
Skrip memacu MySQL dan menyesuaikan pembolehubah. Mungkin ada cara yang lebih baik, jadi saya menjawab dengan santai.