본문 바로가기
Today I learned

2021 03 02 -

by soheemon 2021. 3. 2.

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

댓글