본문 바로가기
문제풀이/SQL 문제풀이

DataLemur_Odd and Even Measurements(Medium)

by yj-data 2026. 1. 13.

질문: 데이터를 일별로 묶고, 하루 안에서 순서대로 일어난 일 중, 홀수번째 일어난 일의 value를 더하고, 짝수번째 일어난 일의 value를 더한 값을 각각 column으로 풀어내라. 

 

input / 예상 output:

with CTE as
  (SELECT measurement_id, measurement_value, measurement_time
        , row_number() over (partition by date(measurement_time) order by measurement_time) as row_num -- day로 묶고 시간순으로 row_number 작성
   FROM measurements)
SELECT date(measurement_time) as measurement_day
        , SUM(measurement_value) FILTER (WHERE row_num%2 = 1) AS odd_sum
        , SUM(measurement_value) FILTER (WHERE row_num%2 = 0) AS even_sum
FROM CTE
GROUP BY date(measurement_time)
ORDER BY date(measurement_time);

 

PostgreSQL 문법을 모르다보니 좀 헤맸다;;

  MySQL PostgreSQL
date(col_name)의 결과 2022-07-10 2022-07-10 00:00:00
일부 값을 추려서 열로 뽑아내기 SUM(CASE WHEN row_num%2 = 1 THEN measurement_value ELSE 0 END) SUM(measurement_value) FILTER (WHERE row_num%2 = 1)