Главная страница
    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.032 c
6-1083156682
arp
2004-04-28 16:51
2004.07.25
"шифруемся" в net send


4-1087288195
Cannabis2003
2004-06-15 12:29
2004.07.25
ASCII vs бинарники


1-1089312203
miwa
2004-07-08 22:43
2004.07.25
Как лучше всего организовать что-то вроде общего свойства для


4-1086870441
Лёха
2004-06-10 16:27
2004.07.25
RegNotifyChangeKeyValue, отслеживание реестра


14-1088768593
AlexG
2004-07-02 15:43
2004.07.25
Кто может объяснить, что это за ошибка?





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