SQL
[SQL] 작품이 없는 작가 찾기
DS쟁이
2022. 11. 30. 18:18
❗ 본 포스팅은 Solvesql의 연습문제를 활용합니다. 다양한 SQL 문제를 풀어보고 싶다면 Solvesql를 방문하세요.
이번 문제는 작품이 없는 작가 찾기이다.
문제를 해석하면
- 살아있지않은 작가를 추출한다.
- 등록된 작품이 없는 작가를 추출한다.(join)
- artist_id와 name을 출력한다.
보기에는 간단해보이는 문제이지만 필자는 생각보다 오래걸린듯하다.
select
t1.artist_id,
name
from
(
select
artist_id,
name
from
artists
where
death_year is not null
) as t1
left join (
select distinct
(artist_id) as artist_id
from
artworks_artists
) as t2 on (t1.artist_id = t2.artist_id)
where
t2.artist_id is null;
필자는 각 테이블의 artist_id가 유니크하고 join 했을때 공백인 행이 moma에 작품이 없는 작가라고 판단했다.
살아있지않은 작가를 추출하기 위해 artists 테이블에 death_year가 있는 사람들만 추출했다.(없으면 아직 살아있는 사람) → t1테이블
artworks_artists를 살펴보니 한 사람에 여러작품이 등록되어있는 것을 확인 할 수 있었고 유니크한 artist_id를 추출하기 위해 distinct를 사용해서 중복제거해줬다. → t2테이블
t1기준으로 t1과 t2를 left join해주면 t1에 t2칼럼들이 붙게 되는데 t1에 붙은 칼럼중에 값이 공백이 것들이 존재한다. 이것들이 바로 작품이 없는 artist이다. 이것들을 추출해서 출력하면 된다.
** 사실 distinct안해도 풀리긴하는데 필자의 생각으로는 하는게 더 생각하기 편해서 그렇게 했다.