본문 바로가기

학습/SQL

[solvesql] SQL 풀어보기 - 작품이 없는 작가 찾기

✔️ 문제

MoMA에 등록된 작가이지만 전시된 작품이 없는 작가들의 마지막 작품을 전시하는 기획전을 준비하려 합니다. MoMA에 등록되어있고, 현재 살아있지 않은 작가 중 MoMA에 등록된 작품이 없는 작가의 ID와 이름을 출력하는 쿼리를 작성해주세요. 쿼리 결과에는 아래 컬럼이 있어야 합니다.

✔️ LEVEL 3

 

📌 주요 요구사항

  1. 사망한 작가(death_year IS NOT NULL)만 조회
  2. MoMA에 등록된 작품이 없는 작가를 필터링
  3. 작가의 ID와 이름을 출력해야 한다.
SELECT A.artist_id , name
FROM (SELECT * FROM artists WHERE death_year IS NOT NULL) A LEFT JOIN artworks_artists 
ON A.artist_id = artworks_artists.artist_id
WHERE artwork_id IS NULL

✍ 코드 해석

  • artists 테이블에서 death_year IS NOT NULL 조건을 적용하여 사망한 작가만 필터링
  • LEFT JOIN artworks_artists를 사용해 작가와 작품 정보를 연결
  • WHERE artwork_id IS NULL 조건을 사용하여 MoMA에 등록된 작품이 없는 작가만 선택

 

📌 실행 결과

  • 21명의 작가 ID와 작가 이름이 출력된다.
  • 해당 작가들은 MoMA에 등록되어 있지만, 전시된 작품이 없는 작가들이다.

✅ 정리

MoMA에 등록된 사망한 작가 중 전시된 작품이 없는 작가의 ID와 이름을 조회하는 SQL 문
LEFT JOIN을 사용하여 작품이 없는 작가를 필터링하며,

작가 ID를 기준으로 그룹화하는 대신 직접 artwork_id의 NULL 여부를 확인하여 정확한 결과를 도출