Pieter
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);
Uw resultatenset zou er, gezien de bovenstaande gegevens, als volgt uitzien:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
| 10 | 18 |
+----------+----------------+
Veel meer gerelateerde functies zijn te vinden hier .
Bewerken
Na zelf enkele tests te hebben gedaan op basis van de uitvoer van uw opmerking, heb ik vastgesteld dat uw database zich in een staat van epische mislukking bevindt . :) Je gebruikt INT's als TIMESTAMPs. Dit is nooit een goed idee. Er is geen gegronde reden om een INT te gebruiken in plaats van TIMESTAMP/DATETIME.
Dat gezegd hebbende, zou je mijn bovenstaande voorbeeld als volgt moeten aanpassen:
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));
Bewerk 2
U kunt hiervoor aanvullende GROUP BY-clausules gebruiken:
SELECT
COUNT(*),
YEAR(timecode),
DAYOFYEAR(timecode),
HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);
Let op, ik heb de FROM_UNIXTIME() voor de beknoptheid weggelaten.