Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql запрос, как лучше решить / 4 сообщений из 4, страница 1 из 1
25.11.2016, 11:46
    #39354445
rekrabbe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql запрос, как лучше решить
Нужно по признаку определить все элементы в группе.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
with t as
(select 1 as grp, 11 as grp_detail, 't' as detail_mark from dual
 union all
 select 1 as grp, 12 as grp_detail, 't' as detail_mark from dual
 union all
 select 1 as grp, 13 as grp_detail, 't' as detail_mark from dual
 union all
 select 2 as grp, 21 as grp_detail, 'f' as detail_mark from dual
 union all
 select 2 as grp, 22 as grp_detail, 't' as detail_mark from dual
 union all
 select 2 as grp, 23 as grp_detail, 'f' as detail_mark from dual)
select *
from (
select grp
  , count(grp_detail) as qty
  , count(case when detail_mark = 't' then grp_detail else null end) as qty_is_mark
from t
group by grp)
where qty_is_mark = qty



Т.е. найти тот grp в котором признак detail_mark равен 't' для всех grp_detail, т.е. grp = 2, не должен попадать в результат, т.к. в нем есть grp_detail с признаком detail_mark = 'f'.
Я написал свое решение, с подсчетом и сравнением итогового кол-ва с кол-вом по признаку. Подскажите как решить лучше, без счета?
...
Рейтинг: 0 / 0
25.11.2016, 12:04
    #39354468
rekrabbe
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql запрос, как лучше решить
Сделал еще так:
Код: plsql
1.
2.
where t.detail_mark = 't'
and not exists (select null from t t1 where t1.grp = t.grp and t1.detail_mark = 'f')


Но хотелось бы увидеть другие решения)
...
Рейтинг: 0 / 0
25.11.2016, 12:10
    #39354472
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql запрос, как лучше решить
rekrabbeнайти тот grp в котором признак detail_mark равен 't' для всех grp_detail
Код: plsql
1.
select grp from t group by grp having count(*) = count(case … end)
...
Рейтинг: 0 / 0
25.11.2016, 12:10
    #39354473
AmKad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sql запрос, как лучше решить
Твое первое решение вполне адекватно. Остановись на нем.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sql запрос, как лучше решить / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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