더북(TheBook)

CUME_DIST( )

CUME_DIST()는 0에서 1까지의 누적 분포 값을 반환하는 함수로, 매개변수 없이 사용합니다. 누적 분포 함수는 확률 통계에서 사용하는 개념으로, 원래 정의는 확률 변수가 특정 값보다 작거나 같을 확률을 나타내는 함수입니다. 그러나 MySQL에서는 현재 로우에 있는 값보다 작거나 같은 로우의 수를 전체 로우의 수로 나눈 값을 반환합니다.

여기서 작거나 같다는 것은 ORDER BY 절에 명시한 칼럼 순서대로 정렬한 다음, 현재 로우 기준으로 앞 로우의 수와 ORDER BY 절에 명시한 칼럼 값이 같은 로우의 수를 더한 결과를 전체 로우 수로 나눈 값을 반환합니다. 즉, (앞 로우 수 + 현재 로우 수 + 현재 로우의 칼럼 값과 같은 로우 수) / 전체 로우 수를 반환합니다. 설명만으로는 어려우니 예제를 봅시다.

코드 11-19

SELECT employee_id, emp_name, dept_name, salary,
       CUME_DIST() OVER (PARTITION BY dept_name
                             ORDER BY salary DESC
                        ) rates
  FROM emp_hierarchy
 ORDER BY 3, 4 DESC;

실행결과

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.