du kan løse dette ved at oprette en tabel, der vil indeholde 24 værdier i timer (00:00, 01:00 osv.) og udføre en venstre (eller højre) joinforbindelse med den og din tabel, der tillader nuller, så du vil have alle 24 rækker, selvom din tabel indeholder 0 rækker overhovedet, og grupper efter burde fungere fint.
Glem ikke at afkorte alt undtagen time fra dit bord, når du udfører join, så resultatet af func du ringer og udfører join on
kan være lig med værdien af denne hjælpetabel.
du kan bruge følgende forespørgsel til at udføre jobbet efter at have udfyldt testtidstabellen med 24 test_time-værdier
select test_time,sum(sign(coalesce(idFromYourTable,0))) as count from testtime
left join yourTable on test_time=hour(yourTableTime)
group by test_time
Dette vil give 0 som tæller, hvis der ikke er nogen værdier, der matcher rækken fra testtabel, mens at have count(*) vil give 24 rækker med 1'ere i stedet for 0'ere, selvom din tabel er tom, også hvis der kun er 1 række i din tabel er umuligt at skelne mellem 0 rækker, fordi resultaterne vil se ens ud for at følge 2 forskellige rækker
årsag vil begge give samme resultat rækkeantal lig med 1 , mens sumteknikken behandler disse rækker forskelligt