sql >> Database >  >> RDS >> Mysql

MySQL-query voor het verkrijgen van telling per uur

je kunt dit oplossen door een tabel te maken die 24 waarden bevat voor uren (00:00, 01:00 enz.) en er een linker (of rechter) join mee uit te voeren en je tabel die nulls toestaat, zodat je alle 24 rijen hebt, zelfs als je tabel bevat helemaal 0 rijen, dan zou groeperen op moeten werken.

vergeet niet alles af te kappen behalve het uur van uw tabel wanneer u join uitvoert, dus resultaat van func die u aanroept en uitvoert join on kan gelijk zijn aan de waarde van deze helptabel.

u kunt de volgende query gebruiken om het werk te doen na het invullen van de testtime-tabel met 24 test_time-waarden

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

Dit levert 0 op als telling als er geen waarden zijn die overeenkomen met de rij uit de testtabel, terwijl het hebben van count(*) 24 rijen zal opleveren met 1s in plaats van 0s, zelfs als uw tabel leeg is, ook als er slechts 1 rij in uw tabel is is onmogelijk om het verschil tussen 0 rijen te onderscheiden omdat de resultaten er hetzelfde uitzien voor de volgende 2 verschillende rijen

oorzaak zal beide hetzelfde resultaat opleveren rijtelling gelijk aan 1 , terwijl de somtechniek deze rijen anders behandelt



  1. Hoe MySQL verbinden met Java?

  2. Wat betekent %Type in Oracle sql?

  3. Hoe u het grootste rendement uit uw Microsoft Access-database kunt halen

  4. MySQL INSERT IF (aangepaste if-statements)