Pierre
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);
Votre ensemble de résultats, compte tenu des données ci-dessus, ressemblerait à :
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+
De nombreuses autres fonctions connexes peuvent être trouvées ici .
Modifier
Après avoir effectué mes propres tests sur la base de la sortie de votre commentaire, j'ai déterminé que votre base de données était dans un état d'échec épique . :) Vous utilisez des INT comme TIMESTAMP. Ce n'est jamais une bonne idée. Il n'y a aucune raison valable d'utiliser un INT à la place de TIMESTAMP/DATETIME.
Cela dit, vous devrez modifier mon exemple ci-dessus comme suit :
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));
Modifier 2
Vous pouvez utiliser des clauses GROUP BY supplémentaires pour y parvenir :
SELECT
COUNT(*),
YEAR(timecode),
DAYOFYEAR(timecode),
HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);
Remarque, j'ai omis le FROM_UNIXTIME() par souci de brièveté.