Positive-Influence-Data

[SQL] 작품이 없는 작가 찾기 본문

SQL

[SQL] 작품이 없는 작가 찾기

DS쟁이 2022. 11. 30. 18:18

❗ 본 포스팅은 Solvesql의  연습문제를 활용합니다. 다양한 SQL 문제를 풀어보고 싶다면 Solvesql를 방문하세요.

 

이번 문제는 작품이 없는 작가 찾기이다.

 

 

문제를 해석하면

  1. 살아있지않은 작가를 추출한다.
  2. 등록된 작품이 없는 작가를 추출한다.(join)
  3. 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안해도 풀리긴하는데 필자의 생각으로는 하는게 더 생각하기 편해서 그렇게 했다.

Comments