powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не работает условие в partition by
6 сообщений из 6, страница 1 из 1
Не работает условие в partition by
    #39337630
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро!

Есть таблица с данными (во вложении). есть номер клиента (CUSTOMER_NUMBER), имя клиента (CUSTOMER_NAME) и вид участника (MEMBER_TYPE). необходимо в отдельное поле вывести итого по клиенту по полю Вид участника, по определенным условиям. Если по клиенту поле Вид участника имеет значения 1 и 2, то итоговая принимает значение 1. Если по клиенту поле Вид участника имеет значения 1, 2 и 3, то итоговая принимает значение 3. Если по клиенту поле Вид участника имеет значения только 2 то итоговая принимает значение 2. В общем группирую с помощью over (partition by d.customer_number), но вот с условиями проблема. Попробовала использовать case, но условие не срабатывает, работает только функция min, которая по группе вытаскивает минимальное значени. Подскажите пожалуйста в чем ошибка?

select
d.customer_number,d.customer_name,d.member_type,
min(case when d.member_type = 1 and d.member_type <> 3 then 1
when d.member_type = 3 then 3
when d.member_type = 2 and d.member_type not in(1,3) then 2
end) over (partition by d.customer_number) as itogo_cust
from table1 d
...
Рейтинг: 0 / 0
Не работает условие в partition by
    #39337702
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_i,

В вашем случае case работает для каждой строки, после чего выбирается минимальное значение.

В Вашем случае было бы логичнее сначала вычислить min и max по группе (может быть подсчитав все отдельные варианты), а потом уже поставить результирующее условие в case.
Например, если max()=3 то 3, если max()=1 то 1, если min()=1 то 1, если min()=2 то 2. :)

Хотя Вы не описали ситуацию 1,3 (ну и просто 3).
...
Рейтинг: 0 / 0
Не работает условие в partition by
    #39337707
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_iто итоговая принимает значение 1Знаешь, итого - это когда что-нибудь складывают.
hum_iно вот с условиями проблема.Это правильное видение ситуации, а в теме - ламерский бред.
hum_iПодскажите пожалуйста в чем ошибка?Анализировать надо агрегат, а не каждлую строку:
Код: plsql
1.
2.
3.
4.
5.
6.
case sum(distinct round(power(2, member_type - 1))) over (partition by d.customer_number)
  when 1 + 2     then 1
  when 1 + 2 + 4 then 3
  when     2     then 2
  else /* оставшиеся 2**3 - 1 - 3 = 4 комбинации */ null
end as overall_member_type
...
Рейтинг: 0 / 0
Не работает условие в partition by
    #39347364
hum_i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elichum_iто итоговая принимает значение 1Знаешь, итого - это когда что-нибудь складывают.
hum_iно вот с условиями проблема.Это правильное видение ситуации, а в теме - ламерский бред.
hum_iПодскажите пожалуйста в чем ошибка?Анализировать надо агрегат, а не каждлую строку:
Код: plsql
1.
2.
3.
4.
5.
6.
case sum(distinct round(power(2, member_type - 1))) over (partition by d.customer_number)
  when 1 + 2     then 1
  when 1 + 2 + 4 then 3
  when     2     then 2
  else /* оставшиеся 2**3 - 1 - 3 = 4 комбинации */ null
end as overall_member_type



Сделала такую агрегацию, в общем работает сейчас. Сейчас оно работает при условии что поле MEMBER_TYPE (описанное выше) принимает только значения 1, 2 и 3. в конструкции case работает все через хард код. НО вот если добавиться новое значение для MEMBER_TYPE, например 4, то overall_member_type вернет null. Можно ли этот процесс сделать более автоматизированным?
...
Рейтинг: 0 / 0
Не работает условие в partition by
    #39347380
Можно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hum_i,
Нужно сделать таблицу-справочник, которая реализует задачу case
...
Рейтинг: 0 / 0
Не работает условие в partition by
    #39347553
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hum_iМожно ли этот процесс сделать более автоматизированным?Без адекватного аналитика/архитектора - маловероятно.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Не работает условие в partition by
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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