MSSQL 데이터 개수 구하기 COUNT

데이터 개수 구하기

MSSQL에서 데이터 개수를 구하는 방법에 대해 포스팅하겠습니다.
전체데이터의 개수를 알고 싶을 수 도 있고
특정구분값 별로 데이터의 개수를 알고 싶을 수 도 있습니다
이럴 때 기본내장 함수인 COUNT함수를 이용해 손쉽게 데이터(ROW)의 개수를 구할 수 있습니다.

COUNT함수 기본문법

SELECT COUNT(*)
  FROM TABLE
/*
    TABLE 내의 모든데이터(ROW) 개수를 출력합니다
*/

SELECT COUNT(COLUMN1)
  FROM TABLE
/*
    TABLE 내의 COLUMN1 의 데이터(ROW)개수를 출력합니다
    이때 NULL데이터는 제외하고 계산됩니다
*/

SELECT COLUMN1
     , COUNT(COLUMN2)
  FROM TABLE
 GROUP BY COLUMN1
/*
    TABLE 내의 COLUMN1 값 별로 데이터(ROW) 개수를 출력합니다
    이때 NULL데이터는 제외하고 계산됩니다
*/

COUNT는 그룹함수 이기 때문에 GROUP BY 되지 않은 칼럼과는 함께 조회될 수 없습니다

💡그룹함수: 그룹별로 데이터를 조회하는 데 사용되는 함수 AVG(평균값), MIN(최소값) 등이 있습니다
GROUP BY로 GROUP을 지정해 주되 지정하지 않은 경우 전체데이터를 그룹으로 조회합니다
💡 COUNT함수는 NULL데이터를 무시하고 계산합니다. NULL데이터를 무시하고 싶지 않다면 ISNULL이나
COALESCE 함수를 사용하여 데이터를 치환하여야 합니다.

COUNT(*), COUNT(칼럼명) 차이점

COUNT(칼럼명)은 지정된 칼럼에서 NULL이 아닌 값의 수를 세지만,
COUNT(*)은 행의 존재 여부에만 관심을 두어 NULL데이터와 관계없이 테이블의 모든 행의 수를 셉니다

데이터 개수가 많을 때는 COUNT_BIG 함수
COUNT함수의 리턴타입은 INT이기 때문에 최대 21억 개쯤 까지만 표시됩니다
COUNT_BIG함수는 COUNT함수와 동일하지만 리턴타입이 BIGINT입니다
그러므로 결과치가 INT로 표시될 수 없는 범위의 수라면 COUNT_BIG함수를 써야 합니다.

예시

사물함정보에 관한 예시로 쉽게 이해해 보겠습니다
사물함의 총 개수, 사용 중인 사물함의 개수, 사람별 사물함 개수 등을 구해보겠습니다.

예시용 테이블

 LOCKER_NO USER_NAME
 1 홍길동
 2 강감찬
 3 장보고
 4 NULL
 5 홍길동
 6 NULL
 7 장보고
테이블이름: LOCKER_INFO
<칼럼설명>
LOCKER_NO: 사물함 번호
USER_NAME: 사물함 사용자이름

사물함 총 개수 구하기

SELECT COUNT(*) AS LOCKER_CNT
  FROM LOCKER_INFO
/*
    LOCKER_INFO 테이블내 모든행 개수를 조회
*/

🎉결과🎉

LOCKER_CNT
7

사용 중인 사물함의 개수 구하기

USER_NAME칼럼에 데이터가 있으면 주인이 있는 사용 중인 사물함이기 때문에
USER_NAME칼럼의 데이터개수를 구하면 사용 중인 사물함 개수를 구할 수 있습니다

SELECT COUNT(USER_NAME) AS USE_LOCKER_CNT
  FROM LOCKER_INFO
/*
    LOCKER_INFO 테이블내 USER_NAME 칼럼의
    데이터 개수를 조회, NULL데이터는 제외됩니다
*/

🎉결과🎉

USE_LOCKER_CNT
 5

사람별 소유한 사물함 개수 구하기

SELECT USER_NAME
     , COUNT(*) AS LOCKER_CNT
  FROM LOCKER_INFO
 WHERE USER_NAME IS NOT NULL
 GROUP BY USER_NAME
/*
    LOCKER_INFO 테이블내 USER_NAME이 있는 데이터중에서
    USER_NAME 칼럼의 데이터를 그룹으로 하여
    각각의 데이터 개수를 조회
*/

🎉결과🎉

 USER_NAME LOCKER_CNT
 홍길동 2
 강감찬 1
 장보고 2