#sql #oracle
Вопрос:
У меня есть таблица, и мне нужно узнать имя человека, у которого нет Iphone? Например. запрос должен быть указан в таблице ниже как Майк.
Я пытаюсь построить логику, используя группу по имени и элементам, где элемент не равен Iphone, или используя таблицу 2, но не могу получить результат, может ли кто-нибудь предложить ?
Имя | Товары |
---|---|
Саймон | IPhone |
Саймон | Таблица |
Саймон | Смотреть |
Саймон | Ноутбук |
Джим | IPhone |
Джим | Таблица |
Джим | Смотреть |
Джим | Ноутбук |
Майк | Таблица |
Майк | Смотреть |
Майк | Ноутбук |
Комментарии:
1. Айфон , конечно 🙂
Ответ №1:
У меня есть таблица, и мне нужно узнать имя человека, у которого нет Iphone?
Используя свою таблицу, вы можете использовать агрегацию:
select name
from t
group by name
having sum(case when item = 'Iphone' then 1 else 0 end) = 0;
having
Предложение подсчитывает количество строк с айфонами. В = 0
нем говорится, что для имени их нет.
Ответ №2:
Мне нравится ответ Гордонса, но это может быть проще понять:
select name
from table
where name not in
(select name
from table
where item like 'Iphone')
Если вам нужна только одна запись для каждого имени, перейдите к этому в конце:
group by name