[SQL๋ฌธ์ ํ๊ธฐ - Advent of SQL 2025 ๐ ] ์ดํ ์ฐ์ ๋ฏธ์ธ๋จผ์ง๊ฐ ๋๋น ์ง ๋
Dec 07, 2025
๋ฌธ์
๋ด๊ฐ ์์ฑํ ์ ๋ต
์ ์ด์ 2022๋
์์ธ์ฒ ๋๊ธฐ์ธก์ ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฏ๋ก ๋ ์ง์ ์์น ์กฐ๊ฑด์ ๋ฐ๋ก ์ ๋ฃ์ด๋ ๋๋ค.

MySQL
select a.measured_at date_alert
from measurements p
right join measurements d
on date_add(p.measured_at,interval 1 day) = d.measured_at
right join measurements a
on date_add(d.measured_at,interval 1 day) = a.measured_at
where -- (year(p.measured_at) = '2022' and year(a.measured_at) = '2022') and
(p.pm10 < d.pm10 and d.pm10 < a.pm10)
and a.pm10 >= 30
order by 1;SQLite
select a.measured_at date_alert
from measurements p
right join measurements d
on date(p.measured_at,'+1 day') = d.measured_at
right join measurements a
on date(d.measured_at,'+1 day') = a.measured_at
where -- strftime('%Y',p.measured_at) = '2022' and strftime('%Y',a.measured_at) = '2022' and
(p.pm10 < d.pm10 and d.pm10 < a.pm10)
and a.pm10 >= 30
order by 1;PostgreSQL
: date์๋ ํ๋ฃจ ๋ํ ๋๋ ๊ทธ๋ฅ +1ํ๋ฉด ๋๊ณ datetime์๋ + interval โ1 dayโ ํ๋ฉด ๋จ
select a.measured_at date_alert
from measurements p
right join measurements d
on p.measured_at+1 = d.measured_at
right join measurements a
on d.measured_at+1 = a.measured_at
where -- (to_char(p.measured_at,'yyyy') = '2022' and to_char(a.measured_at,'yyyy') = '2022') and
(p.pm10 < d.pm10 and d.pm10 < a.pm10)
and a.pm10 >= 30
order by 1;Share article