Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select SUM(TIME_FIELD) FROM TABLE. Такое возможно? / 7 сообщений из 7, страница 1 из 1
28.01.2004, 18:38
    #32391451
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
С удивлением обнаружил, что фукция SUM в FB1.5 не суммирует поля с типом TIME.
Может знает кто как выкрутится с минимальными затратами?
Суммировать бы нужно результаты группировки...
Что типа:
Код: plaintext
1.
2.
3.
4.
select  ext, dialnum, SUM(duration), count(dialnum) from calls
where dialnum like '8%'
 group by ext, dialnum
 having count (dialnum) >  1 

Но, к сожалению, SUM не работает (поле duration типа TIME).
Хотя MAX (duration) работает на ура.
Больно уж не хочется в ХП заталкивать :(
...
Рейтинг: 0 / 0
28.01.2004, 18:47
    #32391467
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
вилимо, тип time сделан для хранения вермени события, а не продолжительности, и поэтому суммирование не имеет смысла.

наверно надо делать не time, а бигинт и хранить минорные единицы времени, секунды, например.

путем несложного вычисления на клиенте (без хыпы) можно превратить секунды в представление в виде часы-дни и т.п.
...
Рейтинг: 0 / 0
28.01.2004, 18:48
    #32391469
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
вот например, дни как бы получились....
...
Рейтинг: 0 / 0
28.01.2004, 18:53
    #32391478
Malcik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
Interesnaja ideja, sascitatsj time :). Jaslji eto hochesh, s pomosci proceduri sdelai pererascot na sekundi i mozjesj pomestits na drugom polje (integer ili dob....). I patom sum.
Malcik
...
Рейтинг: 0 / 0
28.01.2004, 21:02
    #32391549
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
Да, я уже подумываю преобразовывать время приямо клиенте в INTEGER, но согласно LangReference поле TIME и так имеет размерность INT.
Другая проблема получится - запрос в SQL editor уже так легко не напишешь :(

Кстати на CAST (duration as integer) ругается что не может преобразовать строку '00:00'. То есть что то с представлением поля TIME? - оно выдается как строка?!
...
Рейтинг: 0 / 0
28.01.2004, 22:09
    #32391577
Malcik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
A dlja cevo estj UDF ? U menja jestj UDF nashei firmi. Pasmatri FRE.
Malcik
...
Рейтинг: 0 / 0
29.01.2004, 07:43
    #32391710
IgorL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
UDF не желательно - придется писАть под две платформы...
Вроде работает это:
Код: plaintext
1.
2.
3.
4.
5.
6.
select  ext, dialnum,
Sum(EXTRACT(second from duration)+EXTRACT(minute from duration)* 60 +EXTRACT(hour from duration)* 3600 ) SUM_IN_SEC,
count(DIALNUM) from calls
where dialnum like '8%'
group by ext, dialnum
having count (dialnum) >  1 
order by dialnum

На выходе в столбце SUM_IN_SEC суммарное количество секунд.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select SUM(TIME_FIELD) FROM TABLE. Такое возможно? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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