Петър
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);
Вашият набор от резултати, предвид горните данни, ще изглежда така:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+
Могат да бъдат намерени още много свързани функции тук .
Редактиране
След като направих някои собствени тестове въз основа на резултата от вашия коментар, установих, че вашата база данни е в състояние на епичен провал . :) Използвате INT като TIMESTAMPs. Това никога не е добра идея. Няма основателна причина да използвате INT вместо TIMESTAMP/DATETIME.
Въпреки това ще трябва да промените моя горен пример, както следва:
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));
Редактиране 2
Можете да използвате допълнителни клаузи GROUP BY, за да постигнете това:
SELECT
COUNT(*),
YEAR(timecode),
DAYOFYEAR(timecode),
HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);
Забележете, пропуснах FROM_UNIXTIME() за краткост.