#sql #oracle #group-by
#sql #Oracle #группировка по
Вопрос:
из этого результирующего набора я хочу получить только req_id's
те, которые имеют только 0 для количества. Обратите внимание, что может быть несколько строк с одинаковыми req_id
req_id | quantity
kcm01 0
kcm02 1
kcm02 0
kcm02 0
kcm02 4
kcm03 4
kcm03 5
kcm03 0
kcm05 0
kcm05 0
Мне нужен только результат, подобный приведенному ниже,
req_id
kcm01
kcm05
Вот что я пробовал, но это не дало мне желаемых результатов. Спасибо за помощь.
select req_id from t
group by req_id, quantity
having max(quantity) = 0
Комментарии:
1. Не группируйте по количеству — это создаст группу почти для каждой строки в ваших результатах
Ответ №1:
Вот способ добраться до решения.
select req_id
from t
group by req_id
having max(quantity) = 0
and count(distinct quantity)=1
Ответ №2:
select distinct req_id
from table t1
where quantity = 0
and not exists (select 1 from table t2 where t2.req_id = t1.req_id and t2.quantity <> 0)
Ответ №3:
Если у вас есть отдельная req
таблица, то наиболее эффективным методом, вероятно, является:
select r.*
from reqs r
where not exists (select 1
from t
where t.req_id = r.req_id and t.quantity <> 0
);