Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите составить запрос, с группировкой только по часам... 
V
    Опции темы
Coder
Дата 5.6.2008, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 1
Всего: 11



Помогите составить запрос, который бы выдавал следующей результат:
Код

00-01 - 50
01-02 - 1240
02-03 - 1012
....
....
....
21-22 - 21544
22-23 - 10250


Где, два первые числа это интервал часов, а третье число кол-во сообщений пришедшее за это время. Например, 21-22 - 21544 означает, что с 21 часа по 22 пришло 21544 сообщения (не важно какая дата).

Группировку можно сделать по полю, которое хранит дату-время сообщения, но тут проблема в том, что группировать нужно только по часам!

Мне это нужно, чтобы отследить пользовательскую активность.


PM MAIL   Вверх
skyboy
Дата 5.6.2008, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(Coder @  5.6.2008,  08:02 Найти цитируемый пост)
 но тут проблема в том, что группировать нужно только по часам!

аааа.... а какая разница?
Код

SELECT date(`dt`),hour(`dt`), hour(`dt`) + 1, count(*)
FROM `table`
GROUP BY DATE(`dt`), hour(`dt`)
ORDER BY 1,2

PM MAIL   Вверх
Coder
Дата 5.6.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 1
Всего: 11



хм...


вот кусок вывода:

Код

....
| 2008-04-25        |                13 |                    14 |      232 |
| 2008-04-25        |                14 |                    15 |      142 |
| 2008-04-25        |                15 |                    16 |      206 |
| 2008-04-25        |                16 |                    17 |      326 |
| 2008-04-25        |                17 |                    18 |      403 |
| 2008-04-25        |                18 |                    19 |      426 |
| 2008-04-25        |                19 |                    20 |      641 |
| 2008-04-25        |                20 |                    21 |      822 |
| 2008-04-25        |                21 |                    22 |     1342 |
| 2008-04-25        |                22 |                    23 |     1425 |
| 2008-04-25        |                23 |                    24 |     1404 |
| 2008-04-26        |                 0 |                     1 |     1505 |
| 2008-04-26        |                 1 |                     2 |     1488 |
| 2008-04-26        |                 2 |                     3 |     1427 |
| 2008-04-26        |                 3 |                     4 |     1253 |
| 2008-04-26        |                 4 |                     5 |     1120 |
| 2008-04-26        |                 5 |                     6 |      906 |
| 2008-04-26        |                 6 |                     7 |      722 |
| 2008-04-26        |                 7 |                     8 |      652 |
| 2008-04-26        |                 8 |                     9 |      460 |
| 2008-04-26        |                 9 |                    10 |      378 |
| 2008-04-26        |                10 |                    11 |      273 |
| 2008-04-26        |                11 |                    12 |      275 |
| 2008-04-26        |                12 |                    13 |      222 |
| 2008-04-26        |                13 |                    14 |      155 |
| 2008-04-26        |                14 |                    15 |      145 |
| 2008-04-26        |                15 |                    16 |      522 |
| 2008-04-26        |                16 |                    17 |      383 |
| 2008-04-26        |                17 |                    18 |      398 |
| 2008-04-26        |                18 |                    19 |      482 |
| 2008-04-26        |                19 |                    20 |      635 |
| 2008-04-26        |                20 |                    21 |      753 |
| 2008-04-26        |                21 |                    22 |      840 |
| 2008-04-26        |                22 |                    23 |      800 |
| 2008-04-26        |                23 |                    24 |      836 |
| 2008-04-27        |                 0 |                     1 |      815 |

6698 rows in set (5.63 sec)


Здесь идет подсчет за каждый день, а мне группировать именно по часам нужно. В результате должно быть 24 строки. 
Для статистики, чтобы можно было говорить "Что наибольшую активность пользователи провяляют с ХХ по YY часов"

Добавлено через 4 минуты и 1 секунду
Вроде разобрался:

Код

mysql> SELECT hour(`date_time`), hour(`date_time`) + 1, count(*) FROM `gps_info` GROUP BY hour(`date_time`) ORDER BY 1,2;

PM MAIL   Вверх
skyboy
Дата 5.6.2008, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



вот видишь, совсем не сложно.
можно оставить только "order by 1"
да и "+1" можно на клиенте делать.
да и тему можно пометить решененой...

Добавлено через 20 секунд
Цитата(Coder @  5.6.2008,  08:02 Найти цитируемый пост)
не важно какая дата

упустил.
PM MAIL   Вверх
Coder
Дата 5.6.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 733
Регистрация: 13.12.2004

Репутация: 1
Всего: 11



Цитата(skyboy @  5.6.2008,  18:54 Найти цитируемый пост)
вот видишь, совсем не сложно.

Да я понимаю, но тонкости и возможности языка SQL это отдельная тема, которые изучать нет времени. Поэтому приходится задавать такие простые вопросы - решение элементарное! я просто не знал про функцию hour()...  smile 

skyboy, +1
PM MAIL   Вверх
skyboy
Дата 5.6.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Цитата(Coder @  5.6.2008,  10:16 Найти цитируемый пост)
я просто не знал про функцию hour()

жаль.
хочется верить, что ты поставишь себе закладку на http://dev.mysql.com/doc/refman/5.1/en/functions.html
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0696 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.