Главная страница
    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.047 c
4-1095787846
Асякин
2004-09-21 21:30
2004.10.31
Защита информации


14-1097179489
lak
2004-10-08 00:04
2004.10.31
моей маме жарко :)


14-1097137128
Игорь Шевченко
2004-10-07 12:18
2004.10.31
Вопрос к бывшим владельцам старого железа


14-1097657094
klerk
2004-10-13 12:44
2004.10.31
Ссылка в Excel


3-1096465570
starling13
2004-09-29 17:46
2004.10.31
Null в поле на Firebird





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский