partition by

Written by

in

특정 값을 기준으로 그룹으로 나눈 후 최소값이나 최대값 혹은 평균값 등을 구한다고 생각해보자. 아마 group by 로 구하면 되지 않을까 생각이 들것이다. 그런데 group by 로 하면 생각보다 문제가 풀리지 않는다. 이와 관련된 해결책을 찾다가 stackoverflow 에서 다음의 글을 찾았다. 여기에는 4가지 방법을 제시하고 있는데, 나는 이 중에서 group by 를 이용하지 않는 첫 번째 방법을 이용했다. 첫 번째를 선택한 이유는 코드가 짧기 때문이다. 😉

https://stackoverflow.com/questions/13325583/postgresql-max-and-group-by

medein=# select datetime, rain_type from (select datetime, rain_type, input_time, max(input_time) over (partition by datetime) from work.weather_long where rain_type is not null) as b where input_time = max order by datetime;