Meine Datenbanktabellenstruktur ist wie folgt:
Die Felder sind ID, NUM1, NUM2, ZEIT1, ZEIT2, GELD.
Ich möchte die Anzahl der IDs im Abstand von 15 Minuten zählen. Der Effekt ist der gleiche wie bei der folgenden SQL-Anweisung.
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;
Aber es gibt viel sich wiederholenden Code wie den oben genannten, und wenn ich ihn auf 30 Minuten ändere, muss ich viele Änderungen vornehmen, deshalb habe ich den SQL-Master um Hilfe gebeten, um herauszufinden, ob es eine gute Methode gibt.
————————————————————————————————————Trennlinie——————————— — ————————————————————————
Vielen Dank, Genosse Arm, für Ihre Hilfe, jetzt kann ich es abfragen
Anzahl (ID) ist die Anzahl der Personen, die den Bahnhof betreten haben.
Aber in manchen Zeiträumen betreten überhaupt keine Menschen den Bahnhof, daher gibt es in manchen Zeiträumen, wie zum Beispiel von 17:00 bis 17:00 Uhr, keine Menschen: 15
Wenn Sie die Anzahl der Personen zählen möchten, die die Station nicht betreten haben. Der Zeitraum ist auf 0 abgelaufen. Was soll ich tun?
谢邀,可以纵向排列的化,如下
where 限制时间段,group by里面除以你需要的时间间隔。
我不知道你为什么出错,可能和mysql版本有关,我是mysql5.6
结果
看了下,跑的还是蛮快的,0.3s不到
列数不定啊,真的定义不少变量
脚本驱动MySQL ,定制一个变量。也许有更好的办法,我就闲的回答了下