SQL-запрос. Выбрать компании в которых состоят только пользователи, не привязанные к другим компаниям

Рейтинг: 0Ответов: 2Опубликовано: 13.08.2023

Таблица

Есть такая таблица, необходимо составить Sql-запрос, чтоб выбрать компании в которых состоят только(!) пользователи, не привязанные к другим компаниям. Перепробовал все, что только знаю и зашёл в тупик. Если у вас есть варианты или хотя бы направление куда думать - буду рад почитать. Заранее спасибо!

Ответы

▲ 0Принят

Можно такой вариант

select company_id
from(
  select company_id
     ,count(*)over(partition by user_id) ucnt
  from t
)x
group by company_id
having max(ucnt)=1
▲ 0

Как вариант, найти сколько компаний имеется у каждого пользователя и отфильтровать те компании, у которых у всех пользователей максимальное число компаний равно одному:

select company_id
from (
  select t.company_id, t.user_id, t2.cc
  from t
  join (
    select user_id, count(*) cc -- подсчет количества компаний по пользователю
    from t
    group by user_id
  ) t2 on t.user_id = t2.user_id
) res
group by company_id
having max(cc) = 1

результат sql fiddle:

3
5