sql >> Databasteknik >  >> RDS >> Mysql

MySQL-fråga för att få räkning per timme

du kan lösa detta genom att skapa en tabell som kommer att innehålla 24 värden för timmar (00:00, 01:00 etc) och utföra en vänster (eller höger) sammanfogning med den och din tabell som tillåter nollvärden så att du kommer att ha alla 24 rader även om din tabell innehåller 0 rader alls, då borde gruppera efter fungera bra.

Glöm inte att trunkera allt utom timme från ditt bord när du gör gå med så resultatet av funktionen ringer och utför join on kan vara lika med värdet av denna hjälptabell.

du kan använda följande fråga för att göra jobbet efter att ha fyllt i testtidstabellen med 24 test_time-värden

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

Detta kommer att ge 0 som count om det inte finns några värden som matchar raden från testtabellen, medan count(*) ger 24 rader med 1:or istället för 0:or även om din tabell är tom, även om det bara finns 1 rad i din tabell är omöjligt att skilja skillnaden mellan 0 rader eftersom resultaten kommer att se likadana ut för följande 2 olika rader

orsak kommer båda att ge samma resultat radantal lika med 1, medan summatekniken behandlar dessa rader på olika sätt



  1. ORA 00904 Fel:Ogiltig identifierare

  2. Kan jag konvertera detta utf8-tecken?

  3. SQLite UNIK begränsning

  4. databaslänk mellan två mysql-servrar som körs på två olika platser