Выбор SQL на основе двух переменных, исключая другие

#sql #database #select #nested-queries

#sql #База данных #выберите #вложенные запросы

Вопрос:

Я запрашиваю таблицу, просматривающую три поля; unit_id, group_id и service.

Каждый unit_id уникален и имеет один group_id и связанный с ним сервис.

Я хочу вернуть group_id и service, где все устройства с этим group_id имеют одинаковую службу. Например, если у меня есть:

 unit_id    group_id    service
1          group_A     apple
2          group_B     orange
3          group_B     apple
4          group_A     apple
5          group_C     banana
 

Я хочу, чтобы он возвращал group_A и group_C, потому что все службы в этих group_id одинаковы, тогда как group_B имеет как orange, так и apple.

Как мне написать SQL-запрос, который выполняет это?

Большое спасибо.

Ответ №1:

 select * from your_table
where group_id in
(
  select group_id
  from your_table
  group by group_id
  having count(distinct service) = 1
)
 

Комментарии:

1. @juergen_d Понял, это имеет большой смысл, спасибо!