데이터 개수 구하기
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 |