문제 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이 되는 식으로 구현함
'Problem Solving' 카테고리의 다른 글
[SolveSQL] 우리 플랫폼에 정착한 판매자 1 (0) | 2025.02.03 |
---|---|
[SolveSQL] 최근 올림픽이 개최된 도시 (0) | 2025.02.03 |
[SolveSQL] 최대값을 가진 행 찾기 (0) | 2025.02.03 |
[백준] 2655-가장 높은 탑 쌓기 (1) | 2024.09.28 |
[소프티어] '장애물 인식 프로그램' 문제 풀이 (0) | 2024.02.01 |