Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Усовершенствование запроса  [new]
justy
Member

Откуда:
Сообщений: 8
Скажите, как можно усовершенствовать такой запрос:

select
(select sum(pole1) from table1 where user_type='tip1')
+
(select sum(pole2) from table1 where user_type!='tip1')
from dual

Можно проще его написать?
6 фев 08, 11:10    [5250298]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
select sum(decode(user_type, 'tip1', pole1))+sum(decode(user_type, 'tip1', null, pole2) from table1 where user_type is not null/*!!!*/
6 фев 08, 11:14    [5250336]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 119424
Можно проще

SELECT sum(decode(user_type,'typ1',pole1,pole2)) FROM table1
6 фев 08, 11:14    [5250341]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Elic
Member

Откуда:
Сообщений: 30178
sum(decode(user_type, 'tip1', pole1, pole2)
Но это далеко не эквивалент :)
6 фев 08, 11:15    [5250353]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Muxx1986
Member

Откуда:
Сообщений: 59
DECODE использовать.

Select SUM(DECODE(user_type,'tip1',pole1,pole2)) from table1
6 фев 08, 11:18    [5250380]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Mikst
Member

Откуда: Москва
Сообщений: 983
Elic
sum(decode(user_type, 'tip1', pole1, pole2)
Но это далеко не эквивалент :)


эквивалент скорее
sum(decode(user_type, 'tip1', pole1, null, null,pole2)
6 фев 08, 11:27    [5250459]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Jannny
sum(decode(user_type, 'tip1', pole1))+sum(decode(user_type, 'tip1', null, pole2)
Нда, внимательность - не мой конек :(
6 фев 08, 11:40    [5250566]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Elic
Member

Откуда:
Сообщений: 30178
Mikst
Elic
sum(decode(user_type, 'tip1', pole1, pole2)
Но это далеко не эквивалент :)
эквивалент скорее
sum(decode(user_type, 'tip1', pole1, null, null,pole2)
Это тоже ещё не эквивалент
6 фев 08, 11:58    [5250719]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
justy
Member

Откуда:
Сообщений: 8
Спасибо всем, вот так работает!!!!!!!!
SELECT sum(decode(user_type,'typ1',pole1,pole2)) FROM table1
6 фев 08, 12:01    [5250754]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 119424
justy
Спасибо всем, вот так работает!!!!!!!!
SELECT sum(decode(user_type,'typ1',pole1,pole2)) FROM table1


(кричит вдогонку) :
- У Вас поле user_type nullable или not nullable ?
Поздно. Не слышит
6 фев 08, 12:10    [5250833]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Elic
Member

Откуда:
Сообщений: 30178
dmidek
(кричит вдогонку) :
- У Вас поле user_type nullable или not nullable ?
А также между "sum" и "+" есть разница :)
6 фев 08, 12:25    [5250972]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
justy
Member

Откуда:
Сообщений: 8
поле not nullable
6 фев 08, 12:28    [5250993]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
ой йо
Guest
Elic
dmidek
(кричит вдогонку) :
- У Вас поле user_type nullable или not nullable ?
А также между "sum" и "+" есть разница :)
Это какая же? :)
6 фев 08, 12:33    [5251029]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
Elic
Member

Откуда:
Сообщений: 30178
ой йо
Elic
А также между "sum" и "+" есть разница :)
Это какая же? :)
Null-awareness.
6 фев 08, 12:46    [5251154]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
bassyuk
Member

Откуда:
Сообщений: 26

SQL> SELECT SUM(field) field FROM  (
  2                                 SELECT 1  field FROM dual
  3                                 UNION ALL
  4                                 SELECT NULL field FROM dual
  5                                );
 
     FIELD
----------
         1
 
SQL> SELECT 1 + NULL field FROM dual;
 
     FIELD
----------
 
SQL> 

6 фев 08, 12:50    [5251178]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
ой йо
Guest
Elic
ой йо
Elic
А также между "sum" и "+" есть разница :)
Это какая же? :)
Null-awareness.

А, вот ты о чем... Тогда извини, не правильно понял твой камент.
6 фев 08, 12:50    [5251182]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
ой йо
Elic
А также между "sum" и "+" есть разница :)
Это какая же? :)


with t as (select 1 n, null a, 1 b from dual
            union all
           select 1 n, 1 a, 1 b from dual
            union all
           select null n, 1 a, 1 b from dual
                       union all
           select 2 n, 1 a, null b from dual)
select sum(decode(n, 1, a, null, null, b)) from t;

with t as (select 1 n, null a, 1 b from dual
            union all
           select 1 n, 1 a, 1 b from dual
            union all
           select null n, 1 a, 1 b from dual
                       union all
           select 2 n, 1 a, null b from dual)
select (select sum(a) from t where n = 1) + (select sum(b) from t where n != 1) from dual;
6 фев 08, 13:06    [5251320]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
ой йо
Guest
bassyuk
suPPLer

Ребята, и не лень вам Это и так понятно было
6 фев 08, 13:10    [5251361]     Ответить | Цитировать Сообщить модератору
 Re: Усовершенствование запроса  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
ой йо
Ребята, и не лень вам


Пальцы разминал. ;) Только отвлекли, bassyuk быстрее оказался, а я не обновил топик...
6 фев 08, 19:02    [5254036]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить