๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ›‹๏ธ ๋ฐ์ดํ„ฐ ๋ถ„์„/๐Ÿชก SQL QUERY TEST

[Advent of SQL 2024๐ŸŽ„] 3๋…„๊ฐ„ ๋“ค์–ด์˜จ ์†Œ์žฅํ’ˆ ์ง‘๊ณ„ํ•˜๊ธฐ (Day 12)

by ์œ ์Šค :) 2024. 12. 13.
๋ฐ˜์‘ํ˜•

๋‚œ์ด๋„2

 

 

Museum of Modern Art Collection ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋‰ด์š• ํ˜„๋Œ€ ๋ฏธ์ˆ ๊ด€์— ์†Œ์žฅ๋œ ์†Œ์žฅํ’ˆ๊ณผ ๊ทธ ์ž‘๊ฐ€ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์†Œ์žฅํ’ˆ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” artworksํ…Œ์ด๋ธ”์€ ์†Œ์žฅํ’ˆ์˜ ์†Œ์žฅ ์ผ์‹œ(acquisition_date)์™€ ์†Œ์žฅํ’ˆ์˜ ๋ถ„๋ฅ˜(classification) ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ 2014๋…„๋ถ€ํ„ฐ 2016๋…„๊นŒ์ง€ 3๋…„๊ฐ„ ์–ด๋–ค ๋ถ„๋ฅ˜์˜ ์†Œ์žฅํ’ˆ์ด ๋งŽ์ด ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ์•Œ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ์˜ˆ์‹œ์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ๊ฐ ๋ถ„๋ฅ˜์— ๋Œ€ํ•ด ์—ฐ๋„๋ณ„ ์ถ”๊ฐ€๋œ ์†Œ์žฅํ’ˆ ์ˆ˜๋ฅผ ์ง‘๊ณ„ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋Š” ์•„๋ž˜ ์ปฌ๋Ÿผ์„ ํฌํ•จํ•ด์•ผํ•˜๊ณ , ์ปฌ๋Ÿผ ์ˆœ์„œ ์—ญ์‹œ ์•„๋ž˜ ์˜ˆ์‹œ ์ˆœ์„œ์™€ ๋™์ผํ•ด์•ผํ•˜๋ฉฐ, ๊ฐ ํ–‰์€ ๋ถ„๋ฅ˜(classification) ์ปฌ๋Ÿผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ง‘๊ณ„ํ•˜๋Š” 3๋…„๊ฐ„ ์ถ”๊ฐ€๋œ ํŠน์ • ๋ถ„๋ฅ˜์˜ ์†Œ์žฅํ’ˆ์ด ์—†๋”๋ผ๋„ ํ•ด๋‹น ๋ถ„๋ฅ˜์™€ ์ง‘๊ณ„ ๋‚ด์—ญ์„ ๊ฒฐ๊ณผ ํ…Œ์ด๋ธ”์—์„œ ๋ˆ„๋ฝ์‹œํ‚ค์ง€ ๋ง๊ณ  ํฌํ•จํ•ด์ฃผ์„ธ์š”.

  • classification: ์†Œ์žฅํ’ˆ ๋ถ„๋ฅ˜
  • 2014: 2014๋…„
  • 2015: 2015๋…„
  • 2016: 2016๋…„
SELECT 
    COALESCE(a.classification, b.classification) AS classification,
    COALESCE(SUM(CASE WHEN strftime('%Y', a.acquisition_date) = '2014' THEN 1 END), 0) AS "2014",
    COALESCE(SUM(CASE WHEN strftime('%Y', a.acquisition_date) = '2015' THEN 1 END), 0) AS "2015",
    COALESCE(SUM(CASE WHEN strftime('%Y', a.acquisition_date) = '2016' THEN 1 END), 0) AS "2016"
FROM 
    (SELECT DISTINCT classification FROM artworks) b
LEFT JOIN 
    artworks a ON a.classification = b.classification AND 
                 strftime('%Y', a.acquisition_date) IN ('2014', '2015', '2016')
GROUP BY 
    b.classification
ORDER BY 
    classification;

 

๋ฐ˜์‘ํ˜•