par
@rthur » 02 janv. 2019, 18:17
Bonjour,
Alors le plus simple serait de le faire plutôt par heure (ou par créneau de 10 minutes).
Si tu acceptes ce compromis alors tu pourras extraire les infos voulues en 1 seule requête SQL en ajoutant la clause GROUP BY(SUBSTRING(created,0,15))

L'explication c'est que tu coupes le champ created juste après les heures (donc au 15ème caractère), c'est ce à quoi sert le SUBSTRING(created, 0, 15)
Puis tu demandes à MySQL de regrouper tous les enregistrements qui ont ce même champ coupé (et donc sont sur la même heure).
Si tu veux faire cela sur les dizaines de minutes, il te suffit de mettre 16 au lieu de 15 pour couper après le 16è caractère du champ created.
En gros ça donnerai un truc du genre :
SELECT SUBSTRING(created, 0, 15), COUNT(*) FROM ta_table WHERE 1 GROUP BY(SUBSTRING(created,0,15));
Si tu veux n'afficher que l'heure sans la date, tu peux changer le SUBSTRING pour ne pas commencer à 0 mais au 11ème caractère, et ajouter "00" avec la fonction MySQL CONCAT()
+ d'infos sur GROUP BY :
https://sql.sh/cours/group-by
+ d'infos sur CONCAT() :
https://sql.sh/fonctions/concat
Bonjour,
Alors le plus simple serait de le faire plutôt par heure (ou par créneau de 10 minutes).
Si tu acceptes ce compromis alors tu pourras extraire les infos voulues en 1 seule requête SQL en ajoutant la clause GROUP BY(SUBSTRING(created,0,15))
:arrow: L'explication c'est que tu coupes le champ created juste après les heures (donc au 15ème caractère), c'est ce à quoi sert le SUBSTRING(created, 0, 15)
Puis tu demandes à MySQL de regrouper tous les enregistrements qui ont ce même champ coupé (et donc sont sur la même heure).
Si tu veux faire cela sur les dizaines de minutes, il te suffit de mettre 16 au lieu de 15 pour couper après le 16è caractère du champ created.
En gros ça donnerai un truc du genre :
[sql]SELECT SUBSTRING(created, 0, 15), COUNT(*) FROM ta_table WHERE 1 GROUP BY(SUBSTRING(created,0,15)); [/sql]
Si tu veux n'afficher que l'heure sans la date, tu peux changer le SUBSTRING pour ne pas commencer à 0 mais au 11ème caractère, et ajouter "00" avec la fonction MySQL CONCAT()
+ d'infos sur GROUP BY : https://sql.sh/cours/group-by
+ d'infos sur CONCAT() : https://sql.sh/fonctions/concat