728x90
반응형
Weather Observation Station 20 번 문제인데 솔직히... 잘 모르겠다.
mysql을 할 때 집계함수의 경우 where에 쓸 수 없다는 것은 알겠고,
서브쿼리의 윈도우 함수로 계속 풀려고 했는데도 잘 안됐다..
내가 볼 땐 더 쉬운 것을 풀어봐야 겠는데.. 어렵다.
mysql은 앞서 계산한 값을 바로 참조할 수 없기 때문에
CTE(Common Table Expression)를 임의로 만들어서 사용하려는 것은 알겠다.
다만, 어떨 때 그렇게 할 수있는지를 아직도 잘 모르겠다..
다시말하지만, 부트캠프를 들으면서 잠깐 배웠다고 해서.. 알게 되는 게 아니다 진심으로.
별 수 없이 discussion 과 구글링 그리고 지피티에게 물어보면사 하나하나 뜯어보면서 익히고 있다.
..
풀다가 자꾸 medium으로 넘어가는데..
내가 프로시저, cte를 제대로 몰라서..
다른데서 강의를 추가로 들어야 되나 고민중이다..
median의 정의에 집중해야 하는 데
홀수 일때 그냥 중간값이 아니라, 이것도 짝수에서 중심의 두 값의 평균인 것처럼
같은 값을 평균하면 median이 된다고 생각을 해줘야 함.
with ordered as ( -- cte로 빼줌
select
lat_n,
row_number() over( order by lat_n ) as row_num, -- 정렬 시키고 순서번호 부여
count(*) over () as total_count -- 모든 행에 똑같이 total_count 부여
from station
)
select round(avg(lat_n), 4) as median -- 평균의 소수점 4번째 까지 구하기 -> median이 중앙값이니깐.
from ordered
where row_num in ( -- 홀,짝 경우의 수를 적지 않아도 값이 달라짐.
floor((total_count + 1) / 2), -- 홀수일 경우에는 두 값이 같음. 중앙값 1 한개이므로
ceil(total_count/2) -- 짝수일 경우에는 두 값이 달라지기에 그 둘의 평균을 구하면 됨.
);
728x90
반응형
'Data Science > MySQL' 카테고리의 다른 글
[HackerRank sql] where절과 from절 서브쿼리 차이 (0) | 2025.01.28 |
---|---|
[HackerRank sql] 집계함수 내에도 필요하면 distinct 쓸 것. (0) | 2025.01.26 |
[HackerRank sql] group by가 아닌 서브쿼리 조건으로 넣을 것 (1) | 2025.01.25 |
[HackerRank sql] join 동시에 여러 개, 집계 함수 위치 (0) | 2025.01.25 |
[HackerRank sql] join between and를 써서 (0) | 2025.01.25 |