Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Общая сумма всех операций / 10 сообщений из 10, страница 1 из 1
15.10.2019, 09:54
    #39876359
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
Здравствуйте, есть простой запрос на выборку данных. Нужно добавить проверку, если общая сумма всех операций больше 3000, тогда мы выводим эти данные, если меньше данные не выводим. (Изначально пробовал реализовать через having, не получилось)
...
Рейтинг: 0 / 0
15.10.2019, 10:04
    #39876364
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
elimpion,

case when blablablabla > 3000 then blablablabla else null end
...
Рейтинг: 0 / 0
15.10.2019, 10:08
    #39876368
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
Ну или для группировки:
case when sum(blablablabla) > 3000 then sum(blablablabla) else null end
...
Рейтинг: 0 / 0
15.10.2019, 10:18
    #39876378
123йй
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
elimpion (Изначально пробовал реализовать через having, не получилось)
все зависит от запроса
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with t as
 (select 4 a, 1 b from dual
  union
  select 6, 1 from dual union
select 1 a, 2 b from dual
  union
  select 3, 2 from dual)
select sum(a)
from   t
group by b
having sum (a) > 5
...
Рейтинг: 0 / 0
15.10.2019, 10:22
    #39876386
Dshedoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
Я вижу 2 варианта:
1) Через подзапрос.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with q (rn, amt, id) as (select 1, 100, 1 from dual union all
select 2, 200, 1 from dual union all
select 3, 200, 2 from dual union all
select 4, 200, 2 from dual union all
select 5, 700, 2 from dual)

select * from
(select rn, id, amt, case when sum(amt) OVER(partition by id order by 1) > 400 then 1 else 0 end as z from q)
where z = 1



2) Через минус.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with q (rn, amt, id) as (select 1, 100, 1 from dual union all
select 2, 200, 1 from dual union all
select 3, 200, 2 from dual union all
select 4, 200, 2 from dual union all
select 5, 700, 2 from dual)

select rn, id, amt, case when sum(amt) OVER(partition by id order by 1) > 400 then 1 else 0 end from q
MINUS
select rn, id, amt, case when sum(amt) OVER(partition by id order by 1) > 400 then 2 else 0 end from q
...
Рейтинг: 0 / 0
15.10.2019, 10:24
    #39876388
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
123йй, ваш запрос вывел сумму поле A, это не правильно, он должен был проверить что общая сумма больше 5, если больше тогда выводим все данные
Код: plsql
1.
2.
3.
4.
5.
6.
select 4 a, 1 b from dual
  union
  select 6, 1 from dual union
select 1 a, 2 b from dual
  union
  select 3, 2 from dual
...
Рейтинг: 0 / 0
15.10.2019, 10:47
    #39876410
elimpion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
Разобрался, через over PARTITION BY нахожу общую сумму потом проверяю ее
...
Рейтинг: 0 / 0
15.10.2019, 11:01
    #39876419
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
Dshedoo2) Через минус.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
with q (rn, amt, id) as (select 1, 100, 1 from dual union all
select 2, 200, 1 from dual union all
select 3, 200, 2 from dual union all
select 4, 200, 2 from dual union all
select 5, 700, 2 from dual)

select rn, id, amt, case when sum(amt) OVER(partition by id order by 1) > 400 then 1 else 0 end from q
MINUS
select rn, id, amt, case when sum(amt) OVER(partition by id order by 1) > 400 then 2 else 0 end from q

Виртуоз!
...
Рейтинг: 0 / 0
15.10.2019, 11:09
    #39876429
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
AmKadВиртуоз!Я бы сказал менее завуалировано.
...
Рейтинг: 0 / 0
15.10.2019, 12:00
    #39876478
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Общая сумма всех операций
Dshedoo,

Допили свой первый вариант, убрав сортировку и case-обертку, вынеси сравнение суммы во внешнюю часть запроса.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Общая сумма всех операций / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]