hyeonga_code

Database_24_그룹 함수_AVG, SUM, MAX, MIN, COUNT 본문

Oracle Database

Database_24_그룹 함수_AVG, SUM, MAX, MIN, COUNT

hyeonga 2023. 7. 27. 05:59
반응형

-- SQL 함수
    -- 그룹 함수
        -- 행 집합에 작용하여 그룹 당 하나의 결과를 생성합니다.
        /*
            SELECT GROUP_FUNCTION ( 'column' ), ..
            FROM 'table'
            [ WHERE condition ]
                -- 지정한 column 에 대해 그룹 함수를 적용합니다.
        */
        -- 종류
            -- 숫자 데이터에 사용할 수 있습니다.
                -- AVG : 평균값
                -- SUM : 총합
            -- 모든 데이터 유형에 대해 사용할 수 있습니다.
                -- MAX : 최고값
                -- MIN : 최저값
            -- COUNT : 테이블의 행 수를 반환합니다.
                -- COUNT(*)
                -- 특정 값을 지정하여 사용하는 경우 널 값은 제외됩니다.
                    -- COUNT(expr)
                    -- COUNT(DISTINCT expr) : 중복을 제거합니다.
    
            -- 숫자형 : AVG, MAX, MIN, SUM
        -- 특성
            -- 그룹 함수는 해당 열의 널 값을 무시합니다.
            -- 그룹 함수 + NVL 함수를 사용하는 경우 널 값을 포함하도록 강제합니다.
SELECT AVG(salary), MAX(salary), MIN(salary), SUM(salary)
FROM employees;
    /*
    AVG(salary) MAX(salary) MIN(salary) SUM(salary)
    ----------------------------------------------------------------------
    8775               24000          2500           175500
    */



SELECT TRUNC(AVG(salary)), MAX(salary), MIN(salary), SUM(salary)
FROM employees
WHERE department_id IN(80, 90);
    /*      
    AVG(salary) MAX(salary) MIN(salary) SUM(salary)
    -------------------------------------------------------------------
    14683           24000          8600              88100
    */



    -- MAX/MIN : 숫자형이 아닌 데이터 형식도 가능합니다.
SELECT MAX(hire_date), MIN(last_name)
FROM employees;
    /*
    MAX(hire_date)   MIN(last_name)
    -----------------------------------------------
     15/01/29                 Abel
    */



        -- COUNT
SELECT  COUNT(*), COUNT(department_id), 
                COUNT(DISTINCT department_id), 
                COUNT(last_name)
FROM employees;
    /*
    COUNT(*)    COUNT(...)    COUNT(...)   COUNT(...) 
    -------------------------------------------------------------------
        20                19                  7                   20
    */



SELECT COUNT(commission_pct), 
       AVG(commission_pct), 
       AVG(NVL(commission_pct, 0))
FROM employees; 
    /*
    COUNT(commission_pct)   AVG(commission_pct)  AVG(NVL(commission_pct, 0))
    --------------------------------------------------------------------------------------------------------------
                4                                     0.2125                  0.03695652173913043478260
    */



SELECT MIN(salary), MAX(salary), TRUNC(STDDEV(salary))
FROM employees
WHERE department_id=90;
    /*
    MIN(salary)     MAX(salary)      TRUNC(STDDEV(salary))
    ----------------------------------------------------------
      17000           24000                4041
    */



반응형