SQL para obtener las horas y / o periodo más frecuentes de un usuario
Pregunta
Soy nuevo en SQL de fecha y hora.
Teniendo en cuenta que tengo registros en MySQL con fecha y hora de datos (como se ve a continuación), ¿cuál es la mejor manera de conseguir la hora más frecuente que ocurran o gama / plazo para estos registros para un usuario en particular (es decir john)?
ID | Datetime | User | Activity
0 2010-03-29 13:15:56 john visit
1 2010-03-29 13:13:14 ariel visit
2 2010-03-29 13:09:13 john visit
3 2010-03-29 13:07:21 john visit
4 2010-02-23 12:21:03 john visit
5 2010-02-23 12:01:03 john visit
6 2010-02-23 11:01:03 john visit
7 2010-02-23 02:01:03 john visit
Con los datos anteriores, la hora frecuente para John hacer Visita ??em> sería 13 , mientras que el período sería quizás 12-13 .
El objetivo es encontrar el período / hora que el usuario hace una cierta actividad más.
Gracias de antemano por toda la ayuda!
Solución
Puede depender de la base de datos que está utilizando, pero en MySQL:
SELECT COUNT(id) as count, HOUR(Datetime) as hour FROM table GROUP BY hour ORDER BY count DESC LIMIT 1
(ver http: // dev. mysql.com/doc/refman/5.5/en/date-and-time-functions.html )
Otros consejos
con Oracle se puede escribir algo como
select TO_CHAR(Datetime, 'HH24'), count(ID) from Table group by TO_CHAR(Datetime, 'HH24')
sobre otros RDBMS utilizan función equivalente a extracto horas parte desde el campo de fecha y hora.