1) 내림차순으로 하나, 오름차순으로 하나 정렬한 컬럼을 사용해서
가운데 값을 찾는다.
데이터 개수가 홀수일때는 hi = lo가 일치하는것이 중간값이지만, 짝수개 일때는 데이터 개수가 hi = lo + 1과 hi = lo -1두개가 존재한다.
ROW_NUMBER()함수를 사용해야 레코드 집합에 자연수 집합을 할당해서 연속성과 유일성을 갖게 만들수 있다.
<!> 왜 student_id를 같이 입력했을까?--> 포함하지 않으면 결과가 NULL이 될수가 있다..
SELECT AVG(weight) AS median
FROM (SELECT weight,
ROW_NUMBER() OVER (ORDER BY weight ASC, student_id ASC) AS hi,
ROW_NUMBER() OVER (ORDER BY weight DESC, student_id DESC) AS lo
FROM Weights) TMP
WHERE hi IN (lo, lo +1 , lo -1);
'Today I learned' 카테고리의 다른 글
2021 03 11 - vuex 빨리보기 (0) | 2021.03.11 |
---|---|
2021 03 08 - ES6 둘러보기 (1) | 2021.03.08 |
화면단에서 css Nocash로 가져오기. (0) | 2021.02.25 |
2021 02 25 - 순번과 갱신 (0) | 2021.02.25 |
2021 02 19 - SQL의 순서 (0) | 2021.02.19 |
댓글