Помогите написать представление!

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
Элешки
Сообщения: 8
Зарегистрирован: 28 сен 2005, 15:32

Помогите написать представление!

Сообщение Элешки » 28 сен 2005, 16:35

Всем привет!
пожалуйста, помогите начинающему программисту!
У меня есть база данных по звонкам:
TABLE CALLS (
ID ID_DOMAIN NOT NULL,
DATE DATE_DOMAIN ,
TIME TIME_DOMAIN ,
LINE INT_DOMAIN ,
NUMBER NUMBER_DOMAIN,
DURATION TIME_DOMAIN,
SECONDS COMPUTED BY (duration-cast('0:00' as time))
);
id,дата, время, тел.линия, номер, по которому звонили или входящий(если входящий, появляется запись <incoming> )и продолжительность звонка. Мне необходимо из этой таблицы выбрать все тел. линии и по каждой из них узнать сколько было сделано звонков входящих и их суммарная продолжительность и исходящих и тоже их суммарная продолжительность.
Я смогла сделать только первую часть задания с помощью view. Вот она :
CREATE VIEW CALL_COUNT(
LINE,
INCOMING,
DURATION)
AS
select line_int, count (M.line_int),
cast('0:00' as time) + sum(seconds)
from calls M
where M.number = '<incoming>'
group by line_int;
А вот со второй частью проблема :( . Может здесь и не view вовсе использовать надо?

MuirsheenDurkin
Сообщения: 44
Зарегистрирован: 21 янв 2005, 10:18

Сообщение MuirsheenDurkin » 28 сен 2005, 16:48

Код: Выделить всё

select 
      line_int, 
      count (M.line_int), 
       (select 
            cast('0:00' as time) + sum(I.seconds)  
            from calls I where  I.line_int = M.line_int 
            and I.number = '<incoming>' ) incoming,
       (select 
            cast('0:00' as time) + sum(I.seconds)  
            from calls I where  I.line_int = M.line_int 
            and I.number <> '<incoming>' ) outgoing,
      cast('0:00' as time) + sum(seconds) duration
from calls M 
group by line_int;

Элешки
Сообщения: 8
Зарегистрирован: 28 сен 2005, 15:32

Сообщение Элешки » 28 сен 2005, 17:16

Ой, спасибки большое!! :D

Ответить