문제: https://datalemur.com/questions/odd-even-measurements
나의 풀이
는 없다! 마이에스큐엘이었으면 풀 수 있었을 것 같은데 포스트그레는 날짜 추출 부분 문법이 달라가지구.. 어떻게 하나 찾아봤더니!
SELECT measurement_day
, SUM(measurement_value) FILTER (WHERE rnum % 2 != 0) AS odd_sum
, SUM(measurement_value) FILTER (WHERE rnum % 2 = 0) AS even_sum
FROM (
SELECT CAST(measurement_time AS DATE) AS measurement_day
, measurement_value
, ROW_NUMBER() OVER (
PARTITION BY CAST(measurement_time AS DATE)
ORDER BY measurement_time
) AS rnum
FROM measurements) sub
GROUP BY measurement_day;
1.
CAST(컬럼 AS DATE) - 일자만 추출!
포스트그래는 이렇게 캐스트 함수를 쓰나보다. 이걸 몰랐다!
마이에스큐엘은 DATE(컬럼) 이렇게 했을텐데
2.
로넘버랑 홀수 짝수 구분하는 방법은 똑같당
3.
근데 홀수 짝수 구분할 때 마이에스큐엘이었으면 나라면 케이스 함수 썼을 것 같은데
여기서는 필터를 썼다 필터도 안 익숙한 부분! 그래도 직관적이어서 이해하기 쉽다