Mysql
 sql >> Base de données >  >> RDS >> Mysql

Requête MySQL pour obtenir le nombre par heure

vous pouvez résoudre ce problème en créant une table qui contiendra 24 valeurs pour les heures (00h00, 01h00, etc.) et effectuer une jointure gauche (ou droite) avec elle et votre table autorisant les valeurs nulles afin que vous ayez les 24 lignes même si votre tableau contient 0 lignes du tout, alors le regroupement par devrait fonctionner correctement.

N'oubliez pas de tronquer tout sauf l'heure de votre table lorsque vous effectuez une jointure, donc le résultat de la fonction que vous appelez et effectuez join on peut être égal à la valeur de cette table d'aide.

vous pouvez utiliser la requête suivante pour faire le travail après avoir rempli la table testtime avec 24 valeurs 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

Cela fournira 0 comme nombre s'il n'y a pas de valeurs correspondant à la ligne de la table de test, tandis que le nombre (*) fournira 24 lignes avec des 1 au lieu de 0 même si votre table est vide, également s'il n'y a qu'une seule ligne dans votre table. est impossible de distinguer la différence entre 0 lignes car les résultats seront identiques pour suivre 2 lignes différentes

cause fournira à la fois le même nombre de lignes de résultat égal à 1 , tandis que la technique de somme traite ces lignes différemment