[hackerrank] Weather Observation Station 20

yenpkr·2025년 5월 20일
0

sql

목록 보기
90/91

문제

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()

  • row_number() over(PARTITION BY 컬럼 order by 정렬할 컬럼)
    PARTITION BY 컬럼 별로 나눠서 over(order by 정렬할 컬럼) 기준 순서대로 번호 부여

✅ percent_rank()

  • 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

0개의 댓글