99:
SELECT
P.pid
FROM
(
SELECT DISTINCT
Pi.pid, M.Director
FROM Production Pi
JOIN Movie M ON Pi.mid = M.mid
) P
GROUP BY
P.pid
HAVING
COUNT(p.Director) = 2
AND MIN(CASE WHEN p.Director in ('Ben Affleck', 'Peter Jackson')
THEN 1 ELSE 0 END) = 1
: http://www.anicehumble.com/2019/04/not-every-rdbms-has-every.html
, not in . , , .
with production as
(
select *
from (values
('DC', 'Batman', 'Ben Affleck'),
('DC', 'Robin', 'Peter Jackson'),
('Not DC', 'Not Batman', 'Not Ben Affleck'),
('Not DC', 'Not Robin', 'Not Peter Jackson'),
('Marvel', 'Avengers', 'Joe Russo'),
('WingNut', 'King Kong', 'Peter Jackson'),
('Century Fox', 'Deadpool', 'Ben Affleck'),
('Century Fox', 'Fantastic 4', 'Peter Jackson'),
('Century Fox', 'X-Men', 'Peter Jackson'),
('Millenium Fox', 'Scorpion', 'Ben Affleck'),
('Millenium Fox', 'Sub-Zero', 'Peter Jackson'),
('Millenium Fox', 'Liu Kang', 'Ed Boon')
) as x(publisher, movie, director)
)
select distinct P.publisher
from production P
where P.publisher not in (
select P1.publisher
from production P1
where P1.director not in ('Ben Affleck', 'Peter Jackson')
)
;
. WingNut , .
| publisher |
| ----------- |
| WingNut |
| Century Fox |
| DC |
, min(when true then 1 else 0) = 1
with production as
(
select *
from (values
('DC', 'Batman', 'Ben Affleck'),
('DC', 'Robin', 'Peter Jackson'),
('Not DC', 'Not Batman', 'Not Ben Affleck'),
('Not DC', 'Not Robin', 'Not Peter Jackson'),
('Marvel', 'Avengers', 'Joe Russo'),
('WingNut', 'King Kong', 'Peter Jackson'),
('Century Fox', 'Deadpool', 'Ben Affleck'),
('Century Fox', 'Fantastic 4', 'Peter Jackson'),
('Century Fox', 'X-Men', 'Peter Jackson'),
('Millenium Fox', 'Scorpion', 'Ben Affleck'),
('Millenium Fox', 'Sub-Zero', 'Peter Jackson'),
('Millenium Fox', 'Liu Kang', 'Ed Boon')
) as x(publisher, movie, director)
)
select P.publisher
from (select distinct publisher, director from production) P
group by
P.publisher
having
count(p.Director) = 2
and min(case when p.Director in ('Ben Affleck', 'Peter Jackson')
then 1 else 0 end) = 1
;
Correct conclusion, only DC and Century Fox should be displayed. Because they are the only publishers that exclusively Ben Affleck and Peter Jackson work for.
| publisher |
| ----------- |
| Century Fox |
| DC |
Live test: https://www.db-fiddle.com/f/aDDw4Pd1DJzs6J5HgbKbdh/4