Как выбрать уникальные значения домена, которые не используются совместно с другими значениями атрибутов? - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь найти курсы (knamn), которые преподавали только Леннарт, но не Алан или Кьелл.

Результат должен выглядеть следующим образом:

knamn   
Innovation och entreprenorskap  
Manniska datorinteraktion   

Как получить представление выше из следующей таблицы ниже (эта таблица называется z);

kkod        namn        knamn
----------  ----------  ----------------------------------
TIG058      Alan        Programmeringsteknik och databaser
TIG058      Alan        Programmeringsteknik och databaser
TIG058      Alan        Programmeringsteknik och databaser
TIG059      Alan        Systemutvecklingsprojekt
TIG059      Alan        Systemutvecklingsprojekt
TIG059      Alan        Systemutvecklingsprojekt
TIG163      Alan        Beslutsstodsystem
TIG163      Alan        Beslutsstodsystem
TIG163      Alan        Beslutsstodsystem
TIG164      Alan        Interaktionsdesign
TIG164      Alan        Interaktionsdesign
TIG164      Alan        Interaktionsdesign
TIG164      Alan        Interaktionsdesign
TIG164      Alan        Interaktionsdesign
TIG165      Alan        Informatik som vetenskap
TIG165      Alan        Informatik som vetenskap
TIG015      Kjell       Informationsteknologi och informat
TIG015      Kjell       Informationsteknologi och informat
TIG063      Kjell       Informationsteknologi och samhalle
TIG063      Kjell       Informationsteknologi och samhalle
TIG063      Kjell       Informationsteknologi och samhalle
TIG063      Kjell       Informationsteknologi och samhalle
TIG162      Kjell       Affarssystem
TIG162      Kjell       Affarssystem
TIG162      Kjell       Affarssystem
TIG167      Kjell       Fordjupning i programmering
TIG167      Kjell       Fordjupning i programmering
TIA015      Lennart     Innovation och entreprenorskap
TIG015      Lennart     Informationsteknologi och informat
TIG058      Lennart     Programmeringsteknik och databaser
TIG058      Lennart     Programmeringsteknik och databaser
TIG059      Lennart     Systemutvecklingsprojekt
TIG059      Lennart     Systemutvecklingsprojekt
TIG059      Lennart     Systemutvecklingsprojekt
TIG061      Lennart     Manniska datorinteraktion
TIG061      Lennart     Manniska datorinteraktion
TIG162      Lennart     Affarssystem
TIG163      Lennart     Beslutsstodsystem
TIG163      Lennart     Beslutsstodsystem
TIG163      Lennart     Beslutsstodsystem
TIG163      Lennart     Beslutsstodsystem
TIG163      Lennart     Beslutsstodsystem
TIG165      Lennart     Informatik som vetenskap
TIG165      Lennart     Informatik som vetenskap
TIG165      Lennart     Informatik som vetenskap
TIG165      Lennart     Informatik som vetenskap

Ответы [ 3 ]

1 голос
/ 04 марта 2020

только Леннарт научил ...

С условной агрегацией:

select knamn
from tablename
group by knamn
having count(*) = sum(namn = 'Lennart');

См. Демоверсию . Результаты:

| knamn                          |
| ------------------------------ |
| Innovation och entreprenorskap |
| Manniska datorinteraktion      |
1 голос
/ 04 марта 2020

Я думаю, вы просто хотите агрегировать:

select knamn
from t
where name in ('Lennart', 'Alan', 'Kjell')
group by knamn
having min(name) = max(name) and   -- Ensures that only one of the three names match
       min(name) = 'Lennart';      -- And that name is Lennart
0 голосов
/ 04 марта 2020

Вы также можете сделать

select knamn
from tablename
group by knamn
having avg(namn='Lennart')=1; -- 1 is only possible if all the namn per knamn are 'Lennart'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...