![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Построение агрегатной функции SQL для нечисловых знач. [D5, Paradox]
alex-ran © (2003-08-27 11:23:00)
Уважаемые мастера, возникла необходимость написать запрос для таблицы детальной распечатки телефонных звонков так чтобы происходила группировка по номеру абонента с подсчетом количества звонков к нему, общей продолжительностии стоимости. Примерная структура таблицы:
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?
Sergey13 (2003-08-27 11:48:00) [1]
Биллинг - это и есть (если я ни чего не путаю) система учета и расчетов по телефонным услугам. Обычно такие системы делаются на более продвинутых БД.
Zacho (2003-08-27 11:38:00) [2]
> alex-ran (27.08.03 11:34) [4]
Насколько помню, в Local SQL такие конструкции не поддерживаются.
alex-ran (2003-08-27 11:37:00) [3]
> Sergey13 ©
А чего такое Биллинг?
Мне руководство фирмы задачу поставило, вот и извращаемся.
alex-ran (2003-08-27 11:34:00) [4]
> Zacho ©
К сожалению это выбираю не я, файлы получаю из центра связи, а конвертить базы конечно можно, но как-то это не красиво.
А по поводу 2-го вопроса можешь что сказать?
Sergey13 (2003-08-27 11:32:00) [5]
2alex-ran (27.08.03 11:23)
Ты строишь биллинг на парадоксе?!!!
alex-ran (2003-08-27 11:29:00) [6]
> Zacho ©
Zacho (2003-08-27 11:28:00) [7]
Могу дать небольшой совет - для хранения кол-ва времени гораздо лучше подходит целочисленный тип данных.