powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сумма по группам...
12 сообщений из 12, страница 1 из 1
Сумма по группам...
    #33395369
Metaller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Даже не знаю, насколько правильно озаглавил топик, но попробую объяснить, чего надо. Есть таблица:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
+-----------+---------------------+------+-----+---------+----------------+
| Field     | Type                | Null | Key | Default | Extra          |
+-----------+---------------------+------+-----+---------+----------------+
| id        | bigint( 20 ) unsigned |      | PRI | NULL    | auto_increment |
| ip        | bigint( 12 ) unsigned |      |     |  0        |                |
| date      | bigint( 10 ) unsigned |      |     |  0        |                |
| traf_type | tinyint( 3 ) unsigned |      |     |  0        |                |
| traf_in   | bigint( 20 ) unsigned |      |     |  0        |                |
| traf_out  | bigint( 20 ) unsigned |      |     |  0        |                |
+-----------+---------------------+------+-----+---------+----------------+

Записи в ней вида:
Код: plaintext
1.
2.
3.
4.
+-------+--------------+------------+-----------+---------+----------+
| id    | ip           | date       | traf_type | traf_in | traf_out |
+-------+--------------+------------+-----------+---------+----------+
|  30301  |  192168005018  |  2005112218  |          1  |     1009  |       240  |
+-------+--------------+------------+-----------+---------+----------+

где дата 2005112218 - это 22.11.2005, 18:00-19:00

Хочется одним запросом показать юзеру трафик скажем за месяц, просуммировав его посуточно, то бишь чтоб каждая строка результата запроса содержала SUM(traf_in), SUM(traf_out) для traf_type=1, ip=192168005018 за период 2005112200-2005112223.

Т.к. не слишком силен в подобных выкрутасах, решил спросить совета. Оно возможно?
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395699
Metaller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Получилось, причем самостоятельно. :-)

Если кому пригодится, то получилось так:
Код: plaintext
1.
2.
3.
SELECT sum( traf_in ), sum( traf_out )
FROM `ipstat` 
WHERE ip = 192168021002 
GROUP BY `date` - MOD( `date` ,  100  )
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395751
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, следовало бы использовать стандартный тип MySQL datetime и стандартные же функции работы с датой и временем...
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395786
Metaller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мм, если не ошибаюсь, целые числа сравниваются между собой быстрее чем строки YYYY-MM-DD HH:MM:SS? Или внутри MySql datetime живет как unix timestamp?
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395818
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имелось ввиду, что с полем типа даты вам не нужно изобретать велосипед, что бы определить, где в числе дата, а где - время...
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395821
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есил уж хотелось с числами работать, тогда бы и сделали поле чисто числовым, хранили бы там юниксовое время, а не "мы говорим: 'число', подразумеваем - 'время'".
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395823
Metaller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поле делалось числовым из соображений быстродействия - все-таки в таблице будет храниться провайдерская статистика для каждого ip в сети провайдера - а это МНОГО записей. Как показывает предыдущая практика, быстрее оно работает, когда поля в таком виде, еще быстрее - когда все на Постгресе, но тут его поюзать нельзя по религиозным соображениям, потомму выпендриваюсь на том, что есть. :-)
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395843
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так храните в юникс-время.
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395871
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно что выпендрились.
У вас есть реальные данные о том, что datetime работает принципиально медленнее?
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395886
Metaller
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DocAlИменно что выпендрились.
У вас есть реальные данные о том, что datetime работает принципиально медленнее?
У меня была в свое время база диалап-статистики через datetime. После перевода на дату вида userid_year_month_day_hour в виде единого числа, выборка из 2.000.000 записей стала проходить в несколько раз быстрее. Правда, было это несколько лет назад, на других версиях MySql и других машинах.
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395902
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если вам _РЕАЛЬНО_ надо ускорить такого рода запросы -- так и надо строить структуру так, чтобы запросы индекс использовали. В данном случае, год отдельно, месяц отдельно, день отдельно, час отдельно. Чтоб в условии никаких модов не было, только сами столбцы.
...
Рейтинг: 0 / 0
Сумма по группам...
    #33395948
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MetallerМм, если не ошибаюсь, целые числа сравниваются между собой быстрее чем строки YYYY-MM-DD HH:MM:SS? Или внутри MySql datetime живет как unix timestamp?разумеется datetime - бинарный тип, а не строковый.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сумма по группам...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]