Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
ВнизПостроение агрегатной функции SQL для нечисловых знач. Найти похожие ветки
← →
alex-ran (2003-08-27 11:23) [0]Уважаемые мастера, возникла необходимость написать запрос для таблицы детальной распечатки телефонных звонков так чтобы происходила группировка по номеру абонента с подсчетом количества звонков к нему, общей продолжительности и стоимости. Примерная структура таблицы:
Abonent - String - телефон абонента
TimeLong - Time - Продолжительность звонка
Coast - Currency - Стоимость звонка
Вот текст работающего запроса:
select Abonent, Count(Abonent) as tCOUNT, Sum(Coast) as tSUMA,
CAST("0:" || (TRIM(CAST(CAST((Sum(Extract(minute from TimeLong))*60+Sum(Extract(second from TimeLong)))/60 as INTEGER) as Character(10))) || ":" ||
TRIM(CAST((CAST((Sum(Extract(minute from TimeLong))*60+Sum(Extract(second from TimeLong))) as INTEGER)-CAST((Sum(Extract(minute from TimeLong))*60+Sum(Extract(second from TimeLong)))/60 as INTEGER)*60) as Character(10)))) as Time) as RLong
from Det0307
Group By Abonent order by tSUMA Desc
Ужас, не правда ли. И это при том что пока не предусмотрен режим превышения общей продолжительности звонков более 1 часа.
Вопрос 1: можно ли построить функцию суммирования времени в SQL как-нибудь попроще?
Вопрос 2: Я пытался присвоить псевдоним CAST((CAST((Sum(Extract(minute from TimeLong))*60+Sum(Extract(second from TimeLong))) as INTEGER) AS pLong и далее в тексте этого же запроса использовать его в другом вычисляемом поле - но не дает, хотя в Access конструкция типа
SELECT Field, Field*2 AS F1, F1*3 AS F2 From Table
вполне работоспособна.
Можно ли так делать в BDE?
← →
Zacho (2003-08-27 11:28) [1]Могу дать небольшой совет - для хранения кол-ва времени гораздо лучше подходит целочисленный тип данных.
← →
alex-ran (2003-08-27 11:29) [2]
> Zacho ©
← →
Sergey13 (2003-08-27 11:32) [3]2alex-ran (27.08.03 11:23)
Ты строишь биллинг на парадоксе?!!!
← →
alex-ran (2003-08-27 11:34) [4]
> Zacho ©
К сожалению это выбираю не я, файлы получаю из центра связи, а конвертить базы конечно можно, но как-то это не красиво.
А по поводу 2-го вопроса можешь что сказать?
← →
alex-ran (2003-08-27 11:37) [5]
> Sergey13 ©
А чего такое Биллинг?
Мне руководство фирмы задачу поставило, вот и извращаемся.
← →
Zacho (2003-08-27 11:38) [6]
> alex-ran (27.08.03 11:34) [4]
Насколько помню, в Local SQL такие конструкции не поддерживаются.
← →
Sergey13 (2003-08-27 11:48) [7]Биллинг - это и есть (если я ни чего не путаю) система учета и расчетов по телефонным услугам. Обычно такие системы делаются на более продвинутых БД.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c