Оператор SQL, чтобы получить наиболее частые часы и / или период для пользователя - PullRequest
0 голосов
/ 14 января 2011

Я новичок в SQL Datetime.

Учитывая, что у меня есть записи в MySQL с данными Datetime (как показано ниже), Каков наилучший способ получить наиболее часто встречающиеся ЧАС или диапазон / период для этих записей для конкретного пользователя (например, Джон)?

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

С вышеуказанными данными, частый час для Джона , совершающего посещения , будет 13 , а период будет , возможно, 12-13

Цель состоит в том, чтобы найти период / время, в течение которого пользователь выполняет определенную деятельность чаще всего.

Заранее спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 14 января 2011

с оракулом вы можете написать что-то вроде

select TO_CHAR(Datetime, 'HH24'), count(ID) from Table group by TO_CHAR(Datetime, 'HH24')

в другой СУБД, используйте эквивалентную функцию для извлечения части часа из поля Datetime.

0 голосов
/ 14 января 2011

Это может зависеть от базы данных, которую вы используете, но в mysql:

SELECT COUNT(id) as count, HOUR(Datetime) as hour FROM table GROUP BY hour ORDER BY count DESC LIMIT 1

(см. http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html)

...