Piotr
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);
Twój zestaw wyników, biorąc pod uwagę powyższe dane, będzie wyglądał tak:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+
Wiele innych powiązanych funkcji można znaleźć tutaj .
Edytuj
Po wykonaniu kilku własnych testów na podstawie wyników twojego komentarza ustaliłem, że twoja baza danych jest w stanie epickiej porażki . :) Używasz INT jako ZNACZNIKÓW CZASU. To nigdy nie jest dobry pomysł. Nie ma uzasadnionego powodu, aby używać INT zamiast TIMESTAMP/DATETIME.
To powiedziawszy, musisz zmodyfikować mój powyższy przykład w następujący sposób:
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));
Edytuj 2
Aby to osiągnąć, możesz użyć dodatkowych klauzul GROUP BY:
SELECT
COUNT(*),
YEAR(timecode),
DAYOFYEAR(timecode),
HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);
Uwaga, pominąłem FROM_UNIXTIME() dla zwięzłości.