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

Вниз

SQL-запрос   Найти похожие ветки 

 
Sandman25 ©   (2004-07-02 12:23) [40]

[39] Johnmen ©   (02.07.04 12:19)

А кто мешает написать
select sum(case kodpl when "П" then Summ when "Р" -Summ  else 0 end)
from table

Просто [17] работает быстрее, а если мы имеем check(kodPl in "П", "Р"), то 100% надежно.


 
Johnmen ©   (2004-07-02 12:26) [41]

>Sandman25 ©   (02.07.04 12:23) [40]
>А кто мешает написать...

А это уже "KodPl будет анализироваться дважды"
:)

>Просто [17] работает быстрее

Разумно ли экономить на спичках в данном случае ?


 
Курдль ©   (2004-07-02 12:27) [42]


> Sandman25 ©   (02.07.04 12:23) [40]
> [39] Johnmen ©   (02.07.04 12:19)
>
> А кто мешает написать
> select sum(case kodpl when "П" then Summ when "Р" -Summ
>  else 0 end)
> from table

АднАзнАчнА!!! Просто лень было подумать :) Но ведь насколько лучше, чем варивнты с ХП, ХЗ и ТП?!


 
Sandman25 ©   (2004-07-02 12:30) [43]

ср.
if FieldByName("kodPl").AsInteger = 1 then
 ...
// без else!
if FieldByName("kodPl").AsInteger = 2 then
 ..

и
case FieldByName("kodPl").AsInteger of
 1: ...
 2: ...

во втором случае анализируется либо 1 либо 2 раза, причем нет второго обращения к DataSet. Даже если оптимизатор заменяет первый случай на
LocalVar := FieldByName("kodPl").AsInteger;
if LocalVar = 1 then
 ...
// без else!
if LocalVar = 2 then

все равно имеем проигрыш из-за того, что сравнений в среднем 2, а не 1.5 как в моем варианте :)


 
Danilka ©   (2004-07-02 12:40) [44]

как не самый лучший вариант, чтобы не учитывать "О":

select sum(case when when kodpl="П" then Summ else -Summ end)
from table t1
where exists (select 1 from table where id = t1.id and kodpl in ("П", "Р"))

:))


 
Соловьев ©   (2004-07-02 12:43) [45]


> чтобы не учитывать "О":

select sum(case when when kodpl="П" then Summ where kodpl="Р" then -Summ end)
from table


 
Соловьев ©   (2004-07-02 12:47) [46]

Вот так правильно:
select sum(case kodpl when "П" then Summ when "Р" then Summ -Summ end)
from table



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

Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.036 c
3-1088749882
b-a-n
2004-07-02 10:31
2004.07.25
DBGrid


8-1084023831
NightDevil
2004-05-08 17:43
2004.07.25
Вопрос по Медиа Плееру


9-1081874130
Miroslav
2004-04-13 20:35
2004.07.25
формат *.gfx


1-1089638314
serg128
2004-07-12 17:18
2004.07.25
Как открыть окно в определенных коовдинатах раб. стола?


1-1089578313
TechnoDreamer
2004-07-12 00:38
2004.07.25
Как убрать border у PageControl?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский