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