
lat_n 컬럼의 중앙값을 구하는 문제이다.
with a as (
select *,row_number() over(order by lat_n) id_2 from station order by id asc
)
select round(lat_n,4)
from a
where id_2 in (select (case when count(*)%2 = 0 then ((count(*)+count(*)+1)/2)/2
else (count(*)+1)/2 end) as cal
from station)
- row_number() over(PARTITION BY 컬럼 order by 정렬할 컬럼)
PARTITION BY 컬럼 별로 나눠서 over(order by 정렬할 컬럼) 기준 순서대로 번호 부여
- percent_rank() over(PARTITION BY 컬럼 order by 정렬할 컬럼)
PARTITION BY 컬럼 별로 나눠서 over(order by 정렬할 컬럼) 기준 순서대로 값의 상대적 백분위(rank)를 계산
0 이상 1 이하의 소수값
→ 중앙값은 0.5 일 때 !
윈도우 함수 percent_rank() 사용
with a as (
select *,percent_rank() over(order by lat_n) percent from station
)
select round(lat_n,4)
from a
where percent = 0.5