문제 URL : https://solvesql.com/problems/summary-of-artworks-in-3-years/

 

https://solvesql.com/problems/summary-of-artworks-in-3-years/

 

solvesql.com

 

* 문제 저작권으로 인하여 직접 작성한 쿼리문만 첨부

select classification,
sum(case when strftime('%Y', acquisition_date) = '2014' then 1 else 0 end) as '2014',
sum(case when strftime('%Y', acquisition_date) = '2015' then 1 else 0 end) as '2015',
sum(case when strftime('%Y', acquisition_date) = '2016' then 1 else 0 end) as '2016'
from artworks
group by classification
order by classification

 

문제를 풀면서 2014, 2015, 2016 컬럼을 구하는 계산이 각각 다른데, 이 부분을 어떻게 하나의 테이블 안에 표시할 것인가에 대해 고민했음.

각 컬럼에 대한 값을 구한 별개의 테이블을 만들어서 조인을 해야하나 싶었지만, 그러면 독립된 테이블이 3개여서 쿼리문도 좀 지저분하고 '이게 맞나'싶을 것 같아서 ..

근데 생각해보니까 이미 문제명에 답이 있었음. 집계 함수 쓰면 해결될 것을 ....

 

CASE WHEN 구문은 조건에 따른 값을 활용하여 새로운 열 생성 / 열 집계를 도움 (여기선 열 집계의 역할로 사용)

이것과 집계 함수 SUM을 활용하면 문제 내 필요한 값들을 구할 수 있음

조건에 해당하면 카운팅 +1이 되는 식으로 구현함

+ Recent posts