본문 바로가기
오라클 게시판/오라클 함수

【오라클(Oracle) SQL 함수】 STATS_MODE 함수

by 기서무나구물 2021. 10. 20.

포스팅 목차

    o STATS_MODE

     


    문법

     

    stats_mode::=

     


    목적 

    STATS_MODE 함수는 값의 집합을 인수로 취하여, 가장 큰 빈도를 가지는 값(최빈값, mode)을 반환한다.

    다수의 최빈값이 존재하는 경우, 오라클 데이터베이스는 1개의 최빈값을 선택하고 해당 값만을 반환한다.

    복수의 최빈값(만약 복수의 최빈도 값이 존재하면)을 획득하기 위하여, 불확정적인 쿼리에 표시된 것처럼 다른 함수를 조합하여 사용해야 한다.

    Oracle Programming
    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));

     


    관련 내용

    STATS_MODE 함수에서 expr 인수의 문자 값을 비교학 위해 사용된는 정렬을 정의하는 언어 정렬 순서 결정 규칙(대조, collation determination rules)과 이 함수의 반환 값이 문자 값일 때 할당되는 정렬을 정의하는 언어 정렬 순서 파생 규칙(collation derivation rules)에 대한 정보는 "Oracle Database Globalization Support Guide"의 부록 C를 참조하라.

     


    관련 함수

    함수명 함수내용
    AVG 지정된 칼럼에 대한 조건을 만족하는 데이터를 기준으로 Null을 제외한 평균값을 반환한다.
    COUNT 쿼리에 의해 반환되는 관측치 행의 개수를 반환한다. 집계 함수 또는 분석함수로 이용할 수 있다.
    FIRST
    그룹별 또는 전체 데이터에 대하여 FIRST와 LAST 함수는 데이터를 정렬한 후 그룹별(전체 데이터) FIRST(최초) 또는 LAST(최종) 값을 선택하여 지정한 작업을 수행한다. 집계 함수 또는 분석함수에서 이용될 수 있다.
    LAST 그룹별 또는 전체 데이터에 대하여 FIRST와 LAST 함수는 데이터를 정렬한 후 그룹별(전체 데이터) FIRST(최초) 또는 LAST(최종) 값을 선택하여 지정한 작업을 수행한다. 집계 함수 또는 분석함수에서 이용될 수 있다.
    MAX 지정한 인수를 기준으로 그룹 또는 전체 데이터에 대한 최댓값을 반환한다.
    MIN 지정한 인수를 기준으로 그룹 또는 전체 데이터에 대한 인수의 최솟값을 반환한다.
    MEDIAN
    연속된 분산 모델을 가정한 역 분포 함수이다. 이 함수는 수치형 데이터 또는 일자(Date)에 대한 중앙값 또는 값의 정렬 후에 보간법을 사용하여 중앙값을 계산하여 반환한다.
    STATS_MODE
    값의 집합을 인수로 취하여, 가장 큰 빈도를 가지는 값(최빈값, mode)을 반환한다.
    PERCENTILE_CONT 연속된 분포 모델을 가정하여 인수로 지정한 백분위 값에 해당하는 값을 계산하는 역 분포 함수(inverse distribution function)이다.
    PERCENTILE_DISC 이산 분포 모형을 가정하는 역 분포 함수이다. 사용자가 지정한 백분위수에 해당하는 데이터 값을 검색하고, 정확하게 일치하는 데이터 값이 없으면 지정한 백분위 값의 주변 데이터 정렬 옵션에 따라 우선순위가 빠른 바로 앞의 관측치 값을 반환한다. 
    STDDEV 수치형 인수 expr의 표본표준편차(sample standard deviation)를 반환한다.
    SUM 그룹 또는 전체 데이터에 대한 수치형 인수 expr에 대한 값의 합을 반환한다.
    VARIANCE expr의 분산을 반환한다. 집계 함수 또는 분석함수로 이용된다.

     


    예제 

    다음 예제는 hr.employees 테이블에서 부서별 급여의 최대 빈도 값을 반환한다.

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

     

    Results
    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

     


    존재하는 모든 최빈값을 조회해야 하는 경우(여러 모드가 있는 경우) 다음 예제와 같이 다른 함수를 함께 조합하여 검색할 수 있다:

    Oracle Programming
    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;

     

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

     


    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크

    2024.01 수정

    반응형

    댓글