Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Query per ottenere il conteggio all'ora

puoi risolverlo creando una tabella che conterrà 24 valori per ore (00:00, 01:00 ecc.) ed esegui un join sinistro (o destro) con essa e la tua tabella consentendo valori null in modo da avere tutte le 24 righe anche se la tua tabella contiene 0 righe, quindi il raggruppamento per dovrebbe funzionare correttamente.

Non dimenticare di troncare tutto tranne l'ora dal tuo tavolo quando esegui join, quindi risultato di func chiami ed esegui join on può essere uguale al valore di questa tabella di aiuto.

puoi utilizzare la seguente query per eseguire il lavoro dopo aver popolato la tabella testtime con 24 valori 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

Questo fornirà 0 come conteggio se non ci sono valori corrispondenti alla riga dalla tabella di test, mentre avere count(*) fornirà 24 righe con 1s invece di 0 anche se la tua tabella è vuota, anche se c'è solo 1 riga nella tua tabella è impossibile distinguere la differenza tra 0 righe perché i risultati saranno gli stessi per le seguenti 2 righe diverse

la causa fornirà entrambi lo stesso conteggio delle righe del risultato uguale a 1 , mentre la tecnica della somma tratta queste righe in modo diverso