powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
7 сообщений из 7, страница 1 из 1
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
    #32391451
IgorL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С удивлением обнаружил, что фукция 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
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
    #32391467
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вилимо, тип time сделан для хранения вермени события, а не продолжительности, и поэтому суммирование не имеет смысла.

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

путем несложного вычисления на клиенте (без хыпы) можно превратить секунды в представление в виде часы-дни и т.п.
...
Рейтинг: 0 / 0
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
    #32391469
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот например, дни как бы получились....
...
Рейтинг: 0 / 0
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
    #32391478
Malcik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
    #32391549
IgorL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я уже подумываю преобразовывать время приямо клиенте в INTEGER, но согласно LangReference поле TIME и так имеет размерность INT.
Другая проблема получится - запрос в SQL editor уже так легко не напишешь :(

Кстати на CAST (duration as integer) ругается что не может преобразовать строку '00:00'. То есть что то с представлением поля TIME? - оно выдается как строка?!
...
Рейтинг: 0 / 0
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
    #32391577
Malcik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
A dlja cevo estj UDF ? U menja jestj UDF nashei firmi. Pasmatri FRE.
Malcik
...
Рейтинг: 0 / 0
select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
    #32391710
IgorL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select SUM(TIME_FIELD) FROM TABLE. Такое возможно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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