Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Вниз

Распределение записей в таблице по часам в сутках   Найти похожие ветки 

 
VictorT ©   (2004-09-10 14:15) [0]

Есть таблица, одним из полей которой является целое число (время в юникс-формате).
Нужно написать запрос, пока даже не знаю как подступиться к его написанию.
В результате он должен выдавать распределение кол-ва записей по часам, такого типа:

Час  Кол-во
0    12
1    456
2    435
3    44
4    443
...
22   76
23   45

СУБД - MySQL


 
Vlad ©   (2004-09-10 14:21) [1]

я правда не знаю, что такое "время в юникс-формате", но не это ли часом нужно?

select час, count(*) from table group by час


 
VictorT ©   (2004-09-10 14:30) [2]


> что такое "время в юникс-формате",

время, измеренное в секундах с начала Unix Epoch (January 1 1970 00:00:00 GMT).

>но не это ли часом нужно?
>
> select час, count(*) from table group by час

Что-то вроде этого, такой бы запрос был бы правильным для меня, если б в том поле хранился именно час суток, но там хранятся секунды.
Т.е. хранятся секунды, а погруппировать нужно по часам, да и не просто по часам, а по номеру часа в сутках.


 
pasha_golub ©   (2004-09-10 14:42) [3]

select secound*60*60, count(*) from table group by 1


 
pasha_golub ©   (2004-09-10 14:43) [4]

pasha_golub ©   (10.09.04 14:42) [3]
ээ-э-э, прогнал я.


 
pasha_golub ©   (2004-09-10 14:47) [5]

select HOUR(added), count(*) from <table_name> group by 1

Added - имя поля у котором время.


 
VictorT ©   (2004-09-10 14:49) [6]

pasha_golub ©   (10.09.04 14:42) [3]
ты наверно имел в виду что то типа
select ROUND(secound/60/60)/24, count(*) from table group by 1
Я думал так, но так ведь будут неучтены всякого рода переводы часов, високосные невисокосные года... или я что-то гоню? а то совсем уже торможу..


 
pasha_golub ©   (2004-09-10 14:50) [7]

VictorT ©   (10.09.04 14:49) [6]
Переводы часов что так, что так не учтуться ибо это мертвое время по определению.

Последний запрос работает. У себя проверил уже.


 
VictorT ©   (2004-09-10 14:51) [8]

Блин, в смысле так:
select ROUND(secound/60/60)%24, count(*) from table group by 1


 
pasha_golub ©   (2004-09-10 14:52) [9]

VictorT ©   (10.09.04 14:51) [8]
Витя, попробуй запрос из pasha_golub © [5] и не ... мозги. :)


 
VictorT ©   (2004-09-10 15:10) [10]

pasha_golub ©   (10.09.04 14:47) [5]
select HOUR(added), count(*) from <table_name> group by 1

Спасибо, немного подправил, и вроде как работает:
select HOUR(time)%24, count(*) from forum group by 1


 
VictorT ©   (2004-09-10 15:48) [11]

Хм.. что-то не то я напоправлял. Д и твой запрос тоже не совсем правильный получается.
Из манулала:

HOUR(time)
Возвращает час для аргумента time в диапазоне от 0 до 23:

mysql> SELECT HOUR("10:05:03");
       -> 10
А в моём случае аргумент не time, а datetime


 
pasha_golub ©   (2004-09-10 16:21) [12]

VictorT ©   (10.09.04 15:48) [11]
Витя, это по фигам. У меня тоже datetime (timestamp) и все прекрасно работает.


 
VictorT ©   (2004-09-10 16:50) [13]

pasha_golub ©   (10.09.04 16:21) [12]
Ты какими данными тестовую таблицу заполнял?
У меня выдаёт в первом столбце числа большие 23-х
И кол-во больше больше 24-ч в результате.
Именно поэтому я добавил %24, но это тоже неправильно.

А вот такой запрос выдал инфу более похожую на правдивую, но тоже есть сомнения:
select ROUND(secound/60/60)%24, count(*) from table group by 1


 
VictorT ©   (2004-09-13 11:13) [14]

Есть у кого-то ещё мысли?


 
pasha_golub ©   (2004-09-13 16:01) [15]

VictorT ©   (10.09.04 16:50) [13]
Витя, зафигачь мне логин в сервак, я зайду и посмотрю. Или сделай дамп данных, я у себя на серваке попробую.


 
VictorT ©   (2004-09-30 12:22) [16]

Как говорится, не прошло и пол года. Вот оно, решение:
select hour(from_unixtime(secound)), count(*) from table group by 1



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.042 c
3-1096888673
zorik
2004-10-04 15:17
2004.10.31
Визуальное отображение структуры базы Firebird


14-1097466794
080D:07BBh
2004-10-11 07:53
2004.10.31
Linux XP


3-1096800524
InVariantian
2004-10-03 14:48
2004.10.31
Внешние объединение четырех таблиц


3-1096522612
Softamas
2004-09-30 09:36
2004.10.31
Access -> ODBC -> BDE -> Delphi. Проблема с кодировкой


14-1097747995
1008
2004-10-14 13:59
2004.10.31
О! Вот это наши люди!!! %)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский