Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Abfrage zum Abrufen der Anzahl pro Stunde

Sie können dies lösen, indem Sie eine Tabelle erstellen, die 24 Werte für Stunden (00:00, 01:00 usw.) enthält, und eine linke (oder rechte) Verknüpfung mit ihr und Ihrer Tabelle durchführen, die Nullen zulässt, sodass Sie alle 24 Zeilen haben, selbst wenn Ihre Tabelle enthält überhaupt 0 Zeilen, dann sollte gruppieren nach funktionieren.

Vergessen Sie nicht, alles bis auf die Stunde aus Ihrer Tabelle abzuschneiden, wenn Sie Join ausführen, also das Ergebnis der Funktion, die Sie aufrufen und join on ausführen kann gleich dem Wert dieser Hilfetabelle sein.

Sie können die folgende Abfrage verwenden, um die Aufgabe zu erledigen, nachdem Sie die Testzeittabelle mit 24 test_time-Werten gefüllt haben

select test_time,sum(sign(coalesce(idFromYourTable,0))) as count from testtime 
left join yourTable on test_time=hour(yourTableTime) 
group by test_time

Dies liefert 0 als Anzahl, wenn es keine Werte gibt, die mit der Zeile aus der Testtabelle übereinstimmen, während count (*) 24 Zeilen mit 1 anstelle von 0 liefert, selbst wenn Ihre Tabelle leer ist, auch wenn es nur 1 Zeile in Ihrer Tabelle gibt Es ist unmöglich, den Unterschied zwischen 0 Zeilen zu unterscheiden, da die Ergebnisse für die folgenden 2 verschiedenen Zeilen gleich aussehen

Ursache liefern beide dieselbe Ergebniszeilenanzahl gleich 1 , während die Summentechnik diese Zeilen unterschiedlich behandelt