Найти клиентов, которые имеют оба указанных значения в столбце - PullRequest
0 голосов
/ 05 ноября 2018

У меня есть таблица с именем CustomerTable:

Таблица клиентов

image

Я бы хотел найти клиентов, которые предоставляют услуги House и Apartment. В идеале я должен вернуть Питера и Аманду в моих результатах.

Я пытаюсь выполнить приведенный ниже запрос, но он возвращает всех клиентов, у которых есть дом или квартира. Пожалуйста, помогите

select * 
from CustomerTable 
where SERVICE in ('House', 'Apartment')

Ответы [ 3 ]

0 голосов
/ 05 ноября 2018

Вы можете использовать предложение HAVING следующим образом:

SELECT CUSTOMER_NAME
FROM CustomerTable
WHERE SERVICE IN ('House', 'Apartment')
GROUP BY CUSTOMERNAME
HAVING COUNT(DISTINCT SERVICE) = 2
0 голосов
/ 05 ноября 2018

Вот, пожалуйста,

CREATE TABLE CustomerTable(
  CustomerName VARCHAR(45),
  Service VARCHAR(45)
);

INSERT INTO CustomerTable VALUES
('Mark', 'House'),
('Mark', 'Condo'),
('Ashley', 'Condo'),
('John', 'House'),
('John', 'Condo'),
('David', 'House'),
('Peter', 'House'),
('Peter', 'Apartment'),
('Peter', 'Condo'),
('Amanda', 'House'),
('Amanda', 'Apartment');

SELECT    CustomerName
FROM      CustomerTable
WHERE     Service IN ('House', 'Apartment')
GROUP BY  CustomerName
HAVING    MAX(Service) != MIN(Service);

Возвращает:

+----+--------------+
|    | CustomerName |
+----+--------------+
|  1 | Amanda       |
|  2 | Peter        |
+----+--------------+
0 голосов
/ 05 ноября 2018

Вы можете использовать предложение having:

select customer_name
from CustomerTable
where SERVICE in ('House', 'Apartment')
group by customer_name
having min(service) <> max(service);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...