Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Agrupando timestamps no MySQL com PHP


Peter
SELECT COUNT(*), HOUR(timecode)
FROM timecodeTable
GROUP BY HOUR(timecode);

Seu conjunto de resultados, dados os dados acima, ficaria assim:
+----------+----------------+
| COUNT(*) | HOUR(timecode) |
+----------+----------------+
|       10 |             18 | 
+----------+----------------+

Muitas outras funções relacionadas podem ser encontradas aqui .

Editar

Depois de fazer alguns testes meus com base na saída do seu comentário, determinei que seu banco de dados está em um estado de falha épica . :) Você está usando INT's como TIMESTAMPs. Isso nunca é uma boa ideia. Não há razão justificável para usar um INT no lugar de TIMESTAMP/DATETIME.

Dito isso, você teria que modificar meu exemplo acima da seguinte forma:
SELECT COUNT(*), HOUR(FROM_UNIXTIME(timecode))
FROM timecodeTable
GROUP BY HOUR(FROM_UNIXTIME(timecode));

Editar 2

Você pode usar cláusulas GROUP BY adicionais para conseguir isso:
SELECT 
  COUNT(*),
  YEAR(timecode),
  DAYOFYEAR(timecode),
  HOUR(timecode)
FROM timecodeTable
GROUP BY YEAR(timecode), DAYOFYEAR(timecode), HOUR(timecode);

Observe que omiti o FROM_UNIXTIME() por brevidade.