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

[Advent of SQL 2024 ๐ŸŽ„] ์„œ์šธ์ˆฒ ์š”์ผ๋ณ„ ๋Œ€๊ธฐ์˜ค์—ผ๋„ ๊ณ„์‚ฐํ•˜๊ธฐ (Day 11)

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

๋‚œ์ด๋„3

 

์„œ์šธ์ˆฒ ์ผ๋ณ„ ํ‰๊ท  ๋Œ€๊ธฐ์˜ค์—ผ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์„œ์šธ์ˆฒ ๋Œ€๊ธฐ ๊ด€์ธก์†Œ์—์„œ 2022๋…„ 1๋…„ ๋™์•ˆ ์ธก์ •ํ•œ ๋Œ€๊ธฐ ์˜ค์—ผ ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์„œ์šธ์ˆฒ๊ณผ ๊ทธ ์ฃผ๋ณ€ ์ผ๋Œ€์˜ ์œ ๋™ ์ธ๊ตฌ๊ฐ€ ๋Š˜์–ด๋‚จ์— ๋”ฐ๋ผ ์„œ์šธ์ˆฒ ์ฃผ๋ณ€์˜ ๋Œ€๊ธฐ ์˜ค์—ผ ํŒจํ„ด๋„ ์œ ๋™ ์ธ๊ตฌ์˜ ๋ฐฉ๋ฌธ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๋Š” ๋ถ€๋ถ„์ด ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜๋Š”๋ฐ ์ด๋ฅผ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ์ฃผ๋ง์— ์œ ๋™ ์ธ๊ตฌ๊ฐ€ ๋Š˜์–ด๋‚˜๊ณ  ์›”์š”์ผ์— ์œ ๋™์ธ๊ตฌ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉ๋ฌธ ํŒจํ„ด์ด ๋Œ€๊ธฐ ์˜ค์—ผ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ์œ„ํ•ด, measurements ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜์—ฌ ์š”์ผ๋ณ„ ๋Œ€๊ธฐ ์˜ค์—ผ๋„ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์—๋Š” ์•„๋ž˜ 7๊ฐœ์˜ ์ปฌ๋Ÿผ์ด ์กด์žฌํ•ด์•ผํ•˜๋ฉฐ, ๋Œ€๊ธฐ ์˜ค์—ผ๋„ ๊ฐ’์€ ๋ชจ๋‘ ์†Œ์ˆ˜์  ๋‹ค์„ฏ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ ํ•ด ๋„ท์งธ ์ž๋ฆฌ๊นŒ์ง€ ํ‘œํ˜„๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋Š” ์›”์š”์ผ๋ถ€ํ„ฐ ์ผ์š”์ผ ์ˆœ์œผ๋กœ ์ถœ๋ ฅ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • weekday: ์š”์ผ (์›”์š”์ผ-์ผ์š”์ผ)
  • no2: ํ‰๊ท  ์ด์‚ฐํ™”์งˆ์†Œ(NO2) ๋†๋„(ppm)
  • o3: ํ‰๊ท  ์˜ค์กด(O3) ๋†๋„(ppm)
  • co: ํ‰๊ท  ์ผ์‚ฐํ™”ํƒ„์†Œ(CO) ๋†๋„(ppm)
  • so2: ํ‰๊ท  ์•„ํ™ฉ์‚ฐ๊ฐ€์Šค ๋†๋„(ppm)
  • pm10: ํ‰๊ท  ๋ฏธ์„ธ๋จผ์ง€(PM10) ๋†๋„(ใŽ/ใŽฅ)
  • pm2_5: ํ‰๊ท  ์ดˆ๋ฏธ์„ธ๋จผ์ง€(PM2.5) ๋†๋„(ใŽ/ใŽฅ)

 

SELECT 
    CASE strftime('%w', measured_at)
        WHEN '1' THEN '์›”์š”์ผ'
        WHEN '2' THEN 'ํ™”์š”์ผ'
        WHEN '3' THEN '์ˆ˜์š”์ผ'
        WHEN '4' THEN '๋ชฉ์š”์ผ'
        WHEN '5' THEN '๊ธˆ์š”์ผ'
        WHEN '6' THEN 'ํ† ์š”์ผ'
        WHEN '0' THEN '์ผ์š”์ผ'
    END AS weekday,
    ROUND(AVG(no2), 4) AS no2,
    ROUND(AVG(o3), 4) AS o3,
    ROUND(AVG(co), 4) AS co,
    ROUND(AVG(so2), 4) AS so2,
    ROUND(AVG(pm10), 4) AS pm10,
    ROUND(AVG(pm2_5), 4) AS pm2_5
FROM measurements
GROUP BY weekday
ORDER BY 
    CASE weekday
        WHEN '์›”์š”์ผ' THEN 1
        WHEN 'ํ™”์š”์ผ' THEN 2
        WHEN '์ˆ˜์š”์ผ' THEN 3
        WHEN '๋ชฉ์š”์ผ' THEN 4
        WHEN '๊ธˆ์š”์ผ' THEN 5
        WHEN 'ํ† ์š”์ผ' THEN 6
        WHEN '์ผ์š”์ผ' THEN 7
    END;
๋ฐ˜์‘ํ˜•