La structure de mes tables de base de données est la suivante :
Les champs sont ID, NUM1, NUM2, TIME1, TIME2, MONEY.
Je souhaite compter le nombre d'identifiants à intervalles de 15 minutes. L'effet est le même que celui de l'instruction SQL suivante.
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;
Mais il y a beaucoup de code répétitif comme celui ci-dessus, et si je le change à 30 minutes, je devrai faire beaucoup de changements, j'ai donc demandé de l'aide au maître SQL pour voir s'il existe une bonne méthode.
————————————————————————————————————Ligne de démarcation——————————— — ——————————————————————
Merci camarade bras pour votre aide, maintenant je peux l'interroger
count (id) est le nombre de personnes qui sont entrées dans la station
Mais à certaines périodes, personne n'entre dans la station, donc il n'y a personne à certaines périodes, comme 17h00 - 17h00 : 15
Si vous souhaitez compter le nombre de personnes qui ne sont pas entrées dans la station Le délai est complété à 0, que dois-je faire ?
Merci pour l'invitation, vous pouvez la disposer verticalement, comme suit
Où limiter la période de temps, divisez-la par l'intervalle de temps dont vous avez besoin en groupe.
.Je ne sais pas pourquoi vous avez une erreur. Cela peut être lié à la version de MySQL. La mienne est MySQL5.6
Le résultat
Après l'avoir vérifié, il a fonctionné assez vite, moins de 0,3 s
Le nombre de colonnes est variable, donc de nombreuses variables sont définies
Script pilote MySQL et personnalise une variable. Il existe peut-être un meilleur moyen, alors j'ai répondu avec désinvolture.