Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.12;
Скачать: CL | DM;

Вниз

Подскажите как оптимизировать запрос...   Найти похожие ветки 

 
diokant   (2003-05-26 10:52) [0]

есть 2 табл
1-tmp02
cod_uu-код , date_s-дата начала интересуемого периода, date_f-дата конца интересуемого периода

2-tmp04
cod_uu-код , datevatt1-дата начала периода, datevatt2-дата конца периода, c.znth-значение за период

нужно получить сумму за интересуемые периоды

Так работает:

select a.*,
(select sum(c.znth) from tmp04 c
where ( (a.date_s<=c.datevatt1) and (a.date_F>=c.datevatt2)
and (a.cod_uu=c.cod_uu)))
as dataItog from tmp02 a

Но меня не устраивает скорость...
Подскажите, что можно сделать?


 
stone ©   (2003-05-26 11:02) [1]

select a.*, sum(c.znth) as dataItog from tmp02 a inner join tmp04 c on a.cod_uu=c.cod_uu where a.date_s <= c.datevatt1 and a.date_F >= c.datevatt2


 
diokant   (2003-05-26 11:17) [2]

<select a.*, sum(c.znth) as dataItog from tmp02 a inner join tmp04 c on a.cod_uu=c.cod_uu where a.date_s <= c.datevatt1 and a.date_F >= c.datevatt2>

так не работает...

Server: Msg 8118, Level 16, State 1, Procedure Calc_interval_mosh_UU_0101, Line 177
Column "a.cod_uu" is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
Server: Msg 8118, Level 16, State 1, Procedure Calc_interval_mosh_UU_0101, Line 177
Column "a.date_s" is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.
Server: Msg 8118, Level 16, State 1, Procedure Calc_interval_mosh_UU_0101, Line 177
Column "a.date_f" is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.


 
Johnmen ©   (2003-05-26 11:20) [3]

Неясно предназначение первой таблицы в рамках контекста вопроса...


 
diokant   (2003-05-26 11:30) [4]

первая таблица временая - в ней строки соответствуют периодам, за которые необходимо получить значения.

2-я содержит значения, но интервалы меньше или равны интересуемым.
(т.е. в первой интересуемые к примеру за сутки, а во второй интервалы по пол часа, и все соответственно для своих cod_uu)


 
stone ©   (2003-05-26 11:37) [5]


> and there is no GROUP BY clause.


Потому что в конце нужно еще добавить GROUP BY


 
diokant   (2003-05-26 14:38) [6]

Да так где-то в 4 раза быстрее...

select a.*,
sum(c.znth) as dataItog
from tmp02 a left join tmp04 c on a.cod_uu=c.cod_uu
where a.date_s <= c.datevatt1 and a.date_F >= c.datevatt2 group by a.cod_uu, plus_minus, date_s, date_f, ninterval

Спасибо...



Страницы: 1 вся ветка

Текущий архив: 2003.06.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
8-34945
faf
2003-03-01 01:03
2003.06.12
Проигрывание XM , MOD files


1-34909
merfi
2003-05-31 22:25
2003.06.12
---|Ветка была без названия|---


6-34963
msoftware
2003-04-09 09:10
2003.06.12
Нужен совет по Сокетам


3-34673
kir_kul
2003-05-22 13:00
2003.06.12
Как найти различия в двух таблицах.


14-35035
Vlad Oshin
2003-05-26 10:54
2003.06.12
Да что такое...когда надо что-то делать - хочется делать со-