możesz rozwiązać ten problem, tworząc tabelę, która będzie zawierała 24 wartości dla godzin (00:00, 01:00 itp.) i wykonaj lewe (lub prawe) złączenie z nią i tabelą zezwalającą na wartości null, dzięki czemu będziesz mieć wszystkie 24 wiersze, nawet jeśli Twoja tabela zawiera w ogóle 0 wierszy, więc grupowanie według powinno działać poprawnie.
Nie zapomnij skrócić wszystkiego poza godziną ze swojego stołu, kiedy wykonujesz dołączanie, więc wynik funkcji, którą wywołujesz i wykonujesz join on
może być równa wartości tej tabeli pomocy.
możesz użyć następującego zapytania, aby wykonać zadanie po wypełnieniu tabeli testtime 24 wartościami test_time
select test_time,sum(sign(coalesce(idFromYourTable,0))) as count from testtime
left join yourTable on test_time=hour(yourTableTime)
group by test_time
Zapewni to 0 jako licznik, jeśli nie ma wartości pasujących do wiersza z tabeli testowej, podczas gdy licznik(*) zapewni 24 wiersze z 1 zamiast zer, nawet jeśli Twoja tabela jest pusta, również jeśli w Twojej tabeli jest tylko 1 wiersz, nie można odróżnić różnicy między 0 wierszami, ponieważ wyniki będą wyglądać tak samo dla kolejnych 2 różnych wierszy
ponieważ obie dadzą taką samą liczbę wierszy wyniku równą 1 , podczas gdy technika sumowania traktuje te wiersze inaczej