✨APS (Algorithm Problem Solving)/SolveSQL

[solvesql] 작품이 없는 작가 찾기 / SQLite

Nyan cat 2022. 11. 24. 09:26

 

📜 문제 설명

Museum of Modern Art Collection 데이터셋은 미국 뉴욕의 근현대 미술관인 MoMA의 작품과 작가 정보를 담고 있습니다. artists 테이블에는 MoMA에 등록된 작가들의 정보가 있고, artworks_artists 테이블에는 각 작품에 참여한 작가들의 정보가 들어있습니다. 하나의 작품에 여러 명의 작가가 참여할 수 있기 때문에, artworks_artists 테이블의 artwork_id 컬럼과 artist_id 컬럼은 N:M 관계입니다.

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

  • artist_id - 작가 ID
  • name - 작가 이름

 

ARTIST 테이블

  • integer | artist_id아티스트 ID
  • string | name아티스트 이름
  • string | nationality국적
  • string | gender성별
  • integer | birth_year출생연도
  • integer | death_year

 

ARTWORKS_ARTIST 테이블

  • integer | artwork_id작품 ID
  • integer | artist_id아티스트 ID

 

❓ 문제

현재 살아있지 않은 작가 중 MoMA에 등록된 작품이 없는 작가의 ID와 이름을 출력하는 쿼리를 작성해주세요

 

🔗 문제 링크

https://solvesql.com/problems/artists-without-artworks/

 

solvesql

© Copyright 2021-2022 solvesql.com

solvesql.com

 

💡 문제 풀이

ARTWORK_ARTISTS 테이블에서 작가의 id를 고유값으로 조회해서 서브쿼리로 만든다

그리고 ARTIST 테이블의 정보 중 해당 서브 쿼리에 아이디가 없는 값만 조회한다 (작품이 없는 작가 조회이므로)

사망연도가 비어있지 않은 작가라는 조건을 건다 

SELECT
  artist_id,
  name
FROM
  artists
WHERE
  artist_id NOT IN (
    SELECT DISTINCT
      artist_id
    FROM
      artworks_artists
  )
  AND death_year IS NOT NULL
반응형