본문 바로가기

[오라클 레퍼런스 함수] STATS_MODE - 최빈값(가장 높은 빈도수) 값 반환

by ㅇㅍㅍ 2023. 8. 20.
[오라클 레퍼런스 함수] STATS_MODE - 최빈값(가장 높은 빈도수) 값 반환
728x90

 

STATS_MODE

 

구문

STATS_MODE(expr)

 

목적

STATS_MODE 함수는 인수로 값을 가진 집합을 받아 가장 빈도가 높게 발생하는 값을 반환합니다. 여러 개의 모드가 존재하는 경우 Oracle Database는 하나를 선택하고 그 하나의 값을 반환합니다.

여러 모드를 얻으려면 (만약 여러 모드가 존재한다면) 가상의 쿼리에 표시된 것처럼 다른 함수들을 조합하여 사용해야 합니다.

SELECT x FROM (SELECT x, COUNT(x) AS cnt1
   FROM t GROUP BY x)
   WHERE cnt1 =
      (SELECT MAX(cnt2) FROM (SELECT COUNT(x) AS cnt2 FROM t GROUP BY x));

 

참고:

Oracle Database Globalization Support Guide의 부록 C는 문자열 값 expr을 비교하기 위해 STATS_MODE가 사용하는 정렬을 정의하는 정렬 결정 규칙(collation determination rules) 및 이 함수의 반환 값이 문자열 값인 경우에 할당되는 정렬을 정의하는 정렬 파생 규칙(collation derivation rules)에 대한 정보를 제공합니다.

 

예제

다음 예제는 hr.employees 테이블에서 부서별 급여의 모드(최빈값)를 반환합니다:

SELECT department_id, STATS_MODE(salary) FROM employees
   GROUP BY department_id
   ORDER BY department_id, stats_mode(salary);

DEPARTMENT_ID STATS_MODE(SALARY)
------------- ------------------
           10               4400
           20               6000
           30               2500
           40               6500
           50               2500
           60               4800
           70              10000
           80               9500
           90              17000
          100               6900
          110               8300
                            7000

 

모든 모드를 검색해야 하는 경우 (여러 모드가 있는 경우) 다음 예제와 같이 다른 함수들을 조합하여 수행할 수 있습니다:

SELECT commission_pct FROM
   (SELECT commission_pct, COUNT(commission_pct) AS cnt1 FROM employees
      GROUP BY commission_pct)
   WHERE cnt1 = 
      (SELECT MAX (cnt2) FROM
         (SELECT COUNT(commission_pct) AS cnt2
         FROM employees GROUP BY commission_pct))
   ORDER BY commission_pct;

COMMISSION_PCT
--------------
            .2
            .3

 


출처: 오라클 레퍼런스

원문 링크: Oracle STATS_MODE 함수 문서

 

반응형

댓글