Вниз
Скачать: CL | DM;

Построение агрегатной функции 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
8-58788
gRad2003
2003-05-17 11:58
2003.09.18
midi->wav


1-58715
Patrick
2003-09-08 08:48
2003.09.18
Запись в файл (многопользовательский режим)


1-58720
Makhanev A.S.
2003-09-08 00:39
2003.09.18
OwnerDraw в ListView с CheckBoxes...


4-58962
VKSam
2003-07-18 19:29
2003.09.18
GetKeyboardLayoutName


1-58755
Александр из Минска
2003-09-06 14:22
2003.09.18
Как загрузить интерфейс?




   Наверх