① COUNT (expr)

    COUNT는 쿼리 결과 건수, 즉 전체 로우 수를 반환하는 집계 함수다. 테이블 전체 로우는 물론 WHERE 조건으로 걸러진 로우 수를 반환한다.

    입력

        SELECT COUNT(*)
          FROM employees;
    

    결과

        COUNT(*)
        --------
             107
    

    사원 테이블의 전체 로우 수가 107건임을 알 수 있다. 대부분은 COUNT(*) 형태로 사용하는데, ‘*’ 대신 컬럼명을 넣기도 한다.

    입력

        SELECT COUNT(employee_id)
          FROM employees;
    

    결과

        COUNT(*)
        --------
             107
    

    입력

        SELECT COUNT(department_id)
          FROM employees;
    

    결과

        COUNT(*)
        --------
             106
    

    부서번호를 넣었더니 한 건이 줄어든 106건이 조회되었는데 그 이유는 사원 테이블에 부서번호가 없는, 즉 NULL인 로우가 한 건 존재하기 때문이다. COUNT 함수는 매개변수로 들어오는 expr이 NULL이 아닌 건에 대해서만 로우의 수를 반환한다. 또 다른 형태를 살펴 보자.

    입력

        SELECT COUNT(DISTINCT department_id)
          FROM employees;
    

    결과

        COUNT(DISTINCTDEPARTMENT_ID)
        ----------------------------
                                  11
    

    이번에는 11건만 조회되었는데, 바로 DISTINCT를 붙였기 때문이다. DISTINCT를 붙이면 뒤따라 나오는 컬럼에 있는 유일한 값만 조회된다. 즉 사원 테이블에 있는 부서번호는 종류별로 총 11건이 있다는 뜻이다.

    입력

        SELECT DISTINCT department_id
          FROM employees
         ORDER BY 1;
    

    결과

        DEPARTMENT_ID
        -------------------
                    10
                    20
                    30
                    40
                    50
                    60
                    70
                    80
                    90
                   100
                   110
         
        12개의 행이 선택됨.
    

    위 쿼리의 결과가 12건이 나온 이유는 NULL 값까지 포함되었기 때문이고 COUNT(DISTINCT department_id)는 NULL을 제외하므로 11건만 반환된다.

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