Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.06.12;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
4-35111
anod
2003-04-14 14:25
2003.06.12
RowSelect в ListView


3-34710
edicon
2003-05-23 00:28
2003.06.12
Alias


1-34882
Ш-К
2003-05-31 06:10
2003.06.12
Двоично-десятичный формат


8-34942
KA_
2002-12-23 08:59
2003.06.12
Вейвлет-анализ изображений


14-35009
Malder
2003-05-26 01:19
2003.06.12
XP грузится быстрее w2k





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский