Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Несколько величин из одной таблицы  [new]
barbaris841
Guest
Как посчитать несколько величин для одной большой таблицы, не задавая ее каждый раз?
Мне нужно как можно сильнее сократить код.
Написать в одном селекте через запятую не получится, потому что считаются эти величины при разных условиях.
Я привел все коды к виду
select a, b
from (select ...)
where ...
Во внутреннем селекте очень много всего, мне нужно писать его один раз, чтобы это не выглядело громоздко.
30 сен 15, 10:46    [18213280]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
Добрый Э - Эх
Guest
почитать про WITH-subquery clause?
30 сен 15, 10:56    [18213352]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
JDS
Member

Откуда:
Сообщений: 690
barbaris841
Написать в одном селекте через запятую не получится, потому что считаются эти величины при разных условиях

Ну и может case сюда же )
30 сен 15, 11:01    [18213399]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
barbaris841
Guest
Добрый Э - Эх,

Да, спасибо, это почти то, что мне нужно.
Задам в начале эту большую таблицу и буду далее обращаться к ней.
Простите за глупые вопросы, я только учусь.
Кстати, мой наставник ничего не рассказывал про конструкции с with, я думаю, что он ждет от меня другого решения этой задачи.
30 сен 15, 11:09    [18213463]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
barbaris841
Guest
JDS,

Можете подробнее рассказать про конструкции с case?
Я гуглил примеры, но мне кажется, что они не сделают мне того, что я хочу.
Чтобы вы понимали:

Первый код:
select a, count(b)
from (select a, b, c, d from...)
where d=0


Второй:
select a, count(b)
from (select a, b, c, d from...)
where d>0
and c>d


Ну и вывести нужно в одной таблице "a" и оба показателя для него.
30 сен 15, 11:12    [18213499]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
JDS
Member

Откуда:
Сообщений: 690
Нечего рассказывать особо, при условии, что (select a, b, c, d from...) одинаково и там и там:
select a, count(case when d>0 and c>d then 1 else 0 end) "Первый показатель",
             count(case when d=0 then 1 else 0 end) "Второй показатель",
from (select a, b, c, d from...)
where (d>0 and c>d) or d=0 -- если нужно
30 сен 15, 11:18    [18213550]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
JDS
Member

Откуда:
Сообщений: 690
Точнее вместо count пишем sum конечно
30 сен 15, 11:19    [18213560]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
JDS
Member

Откуда:
Сообщений: 690
select a, sum(case when d>0 and c>d then 1 else 0 end) "Первый показатель",
             sum(case when d=0 then 1 else 0 end) "Второй показатель",
from (select a, b, c, d from...)
where (d>0 and c>d) or d=0
30 сен 15, 11:20    [18213566]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
stax..
Guest
barbaris841
Как посчитать несколько величин для одной большой таблицы, не задавая ее каждый раз?
Мне нужно как можно сильнее сократить код.
Написать в одном селекте через запятую не получится, потому что считаются эти величины при разных условиях.
Я привел все коды к виду
select a, b
from (select ...)
where ...
Во внутреннем селекте очень много всего, мне нужно писать его один раз, чтобы это не выглядело громоздко.

создайте view на основе "внутреннего" select ...

тогда запросы будут
select a, count(b)
from vw
where d=0
group by a

Второй:

select a, count(b)
from vw
where d>0
and c>d
group by a


......
stax
30 сен 15, 11:36    [18213690]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
barbaris841
Guest
JDS,

Спасибо огромное, это именно то, что мне нужно! Вы лучший в мире.
30 сен 15, 11:48    [18213788]     Ответить | Цитировать Сообщить модератору
 Re: Несколько величин из одной таблицы  [new]
JDS
Member

Откуда:
Сообщений: 690
barbaris841, спасибо, я знаю ))))
30 сен 15, 11:50    [18213808]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить