본문 바로가기

SQL/DataLemar

[PostgreSQL] (Medium) Odd and Even Measurements [Google SQL Interview Question]

문제: 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.

근데 홀수 짝수 구분할 때 마이에스큐엘이었으면 나라면 케이스 함수 썼을 것 같은데

여기서는 필터를 썼다 필터도 안 익숙한 부분! 그래도 직관적이어서 이해하기 쉽다