Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- SQL
- Datarian
- 누적합
- leetcode
- 퍼널분석
- 신입 데이터분석가
- rank
- 서브쿼리
- python
- pandas
- Retention
- LEFTJOIN
- 데이터리안
- row_number
- 윈도우함수
- SolveSQL
- 데이터분석
- 순위함수
- dense_rank
- advent of sql
- 그로스해킹
- 리텐션
- 프로그래머스
- MYSQL
- 린분석
- 윈도우 함수
- regexp
- 취준
- funnel
- 독서
Archives
- Today
- Total
데이터 분석
solvesql | 다음날도 서울숲의 미세먼지 농도는 나쁨 😵💫 본문
다음날도 서울숲의 미세먼지 농도는 나쁨 😢
✔️0217 복습
문제 조건
1. 당일의 미세먼지 농도보다 바로 다음날의 미세먼지 농도가 더 안 좋은 날을 출력
2. 쿼리 결과는 당일, 다음날, 당일의 미세먼지 농도, 다음날의 미세먼지 농도 컬럼을 포함
Solution
✔️ 쿼리 1 : 셀프조인을 이용하여 해결
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 m2.measured_at = DATE_ADD(m1.measured_at, INTERVAL 1 DAY)
WHERE m1.pm10 < m2.pm10
/*
WITH preprocessed AS (
SELECT measured_at AS today
, (
SELECT measured_at
FROM measurements m2
WHERE m2.measured_at = DATE_ADD(m1.measured_at, INTERVAL 1 DAY)
) AS next_day
, pm10
, (
SELECT pm10
FROM measurements m2
WHERE m2.measured_at = DATE_ADD(m1.measured_at, INTERVAL 1 DAY)
) AS next_pm10
FROM measurements m1
)
SELECT *
FROM preprocessed
WHERE pm10 < next_pm10
*/
✅ JOIN 조건을 통해 m2 테이블의 측정 일시가 m1의 측정 일시의 다음날과 일치하도록 한다
✅ 당일보다 다음날 미세먼지 농도가 더 높은 조건을 추가한다
✔️ 쿼리 2 : 윈도우 함수 LEAD()를 이용하여 해결
SELECT *
FROM (
SELECT measured_at AS today
, LEAD(measured_at, 1) OVER(ORDER BY measured_at) AS next_day
, pm10
, LEAD(pm10, 1) OVER(ORDER BY measured_at) AS next_pm10
FROM measurements
) measure_pm10
WHERE pm10 < next_pm10
✅ LEAD 함수를 활용하여 다음날, 다음날의 미세먼지 농도 정보를 가져온다
✅ SELECT절에서 윈도우 함수로 연산한 컬럼은 WHERE절에서 바로 불러 사용할 수 없기 때문에 FROM절에 활용한다
✅ 당일보다 다음날 미세먼지 농도가 더 높은 조건을 추가한다
'SQL > solvesql' 카테고리의 다른 글
| [플레이그라운드] 카테고리별 매출액, 총매출액, 비율 집계 (0) | 2025.03.03 |
|---|---|
| solvesql | 레스토랑의 요일별 VIP (1) | 2025.01.24 |
| [Day 24] solvesql | Advent of SQL 2024 | 이상 사용자 탐지💡 (2) | 2024.12.25 |
| [Day 23] solvesql | Advent of SQL 2024 | 유량 지표와 저량 지표 (2) | 2024.12.25 |
| [Day 22] solvesql | Advent of SQL 2024 | 친구 수 집계하기💡 (0) | 2024.12.24 |