상세 컨텐츠

본문 제목

[오늘의 코드 98] [solvesql] 다음날도 서울숲의 미세먼지 농도는 나쁨 😢

코드 공부

by eun_00 2024. 8. 14. 21:07

본문

https://solvesql.com/problems/bad-finedust-measure/

 

https://solvesql.com/problems/bad-finedust-measure/

 

solvesql.com

[문제]

서울숲 일별 평균 대기오염도 데이터셋은 2022년 서울숲 대기오염도 측정소에서 매일 기록한 대기오염 정보를 담고 있습니다.

measurements 테이블의 pm10 컬럼에는 다양한 대기오염도 측정 기준 중에서도 미세먼지(PM10) 농도가 기록되어 있습니다. 이 데이터를 이용하여 당일의 미세먼지 농도보다 바로 다음날의 미세먼지 농도가 더 안좋은 날을 찾아주세요. 결과는 아래 컬럼들을 포함해야 합니다.

  • today: 당일 (YYYY-MM-DD)
  • next_day: 다음날 (YYYY-MM-DD)
  • pm10: 당일의 미세먼지 농도
  • next_pm10: 다음날의 미세먼지 농도

[💡 정답]

SELECT 
    m1.measured_at AS today, 
    m2.measured_at AS next_day, 
    m1.pm10,
    m2.pm10 AS next_pm10
FROM 
    measurements m1
JOIN 
    measurements m2 
ON 
    DATE(m2.measured_at) = DATE(DATE_ADD(m1.measured_at, interval 1 DAY))
WHERE 
    m2.pm10 > m1.pm10;
 

 ✔️ 알게된 것 

다음날 날짜의 미세먼지 데이터를 하나의 테이블로 합치도록 같은 테이블로 조인을 사용하였다. 

현 테이블의 날짜와 조인할 테이블의 날짜가 1일 차이인 것을 조인 

 

-  다른 방법: WITH (TABEL_NAME) AS (SELECT ~ FROM~) 

With문을 사용하여 새로운 테이블을 만들고, where절로 조건을 설정하여 추출

 

한참을 봐도 문법오류는 없는 것 같은데 계속 오류가 나서 왜그런가 했더니 mySQL이 아니라 SQL Lite로 설정되어 있었다...

관련글 더보기