더북(TheBook)

① 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건만 반환된다.

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