Pedro
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);
Su conjunto de resultados, dados los datos anteriores, se vería así:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+
Se pueden encontrar muchas más funciones relacionadas aquí .
Editar
Después de hacer algunas pruebas propias basadas en el resultado de su comentario, determiné que su base de datos se encuentra en un estado de error épico. . :) Estás usando INT como TIMESTAMPs. Esto nunca es una buena idea. No hay ninguna razón justificable para usar un INT en lugar de TIMESTAMP/DATETIME.
Dicho esto, tendría que modificar mi ejemplo anterior de la siguiente manera:
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));
Editar 2
Puede usar cláusulas GROUP BY adicionales para lograr esto:
SELECT
COUNT(*),
YEAR(timecode),
DAYOFYEAR(timecode),
HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);
Tenga en cuenta que omití FROM_UNIXTIME() por brevedad.