질문: 데이터를 일별로 묶고, 하루 안에서 순서대로 일어난 일 중, 홀수번째 일어난 일의 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) |
'문제풀이 > SQL 문제풀이' 카테고리의 다른 글
| DataLemur_Signup Activation Rate(Medium) (0) | 2026.01.14 |
|---|---|
| DataLemur_Histogram of Tweets(Easy) (0) | 2026.01.12 |
| SQL 코딩테스트 준비 사이트 비교 (0) | 2025.12.02 |
| SQL/프로그래머스 - 재귀 SQL (0) | 2025.11.27 |
| SQL/프로그래머스 - 자동차 대여 기록 별 대여 금액 구하기(CAST, REPLACE, COALESCE) (0) | 2025.11.27 |