간단한 ‘SQL 집계 함수’ 를 정리하였습니다.
조건절과 Group by 등과 함께 사용하여 다양한 분석을 할 수 있게 해주는 함수 입니다.
COUNT(), MIN(), MAX(), AVG() 함수와 같은 간단한 집계 함수들을 모든 주요 RDBMS에서 지원합니다.
때문에 MySQL, Oracle, PostreSQL, SQL Server 등에서 동일하게 작동합니다.
데이터 카운트
SELECT COUNT(*) FROM 테이블명; /* 전체 데이타의 개수 가져오기 */
SEELECT COUNT(칼럼) FROM 테이블명; /* NULL은 제외한 해당 칼럼의 데이타 개수 가져오기 */
SELECT COUNT(DISTINCT 칼럼) FROM 테이블명; /* NULL을 제외한 해당 칼럼의 고유 값들 가져오기 */
* DISTINCT와 COUNT()의 사용
SQL에서 DISTINCT
키워드는 중복된 값을 제거하는 데 사용됩니다.
DISTINCT
는 NULL
값을 고유한 값으로 취급하며, 결과 집합에서 한 번만 나타나게 합니다.
즉, 여러 행에 NULL
값이 있더라도 SELECT DISTINCT
쿼리의 결과로 NULL
은 단 한 번만 표시됩니다.
그러나 COUNT(DISTINCT column_name)
와 같은 집계 함수를 사용할 때는 NULL
값이 포함되지 않습니다.
합계, 평균, 최소, 최대
다음은 숫자 데이터가 있는 칼럼에서 사용할 수 있는 함수들 입니다.
SELECT SUM(칼럼) FROM 테이블명 /* 칼럼 값들의 합계 구하기 */
SELECT MAX(칼럼) FROM 테이블명 /* 칼럼 값들 중 최댓값 구하기 */
SELECT MIN(칼럼) FROM 테이블명 /* 칼럼 값들 중 구하기 */
SELECT AVG(칼럼) FROM 테이블명 /* 칼럼 값들의 평균값 구하기 */
집계 함수 사용 시 주의 점
개수를 집계할 때는 해당 함수가 NULL (빈 값)을 포함하는지 여부가 굉장히 중요합니다.
데이터 통계를 낼 때 예상치 보다 수치가 1이라도 다르면 해당 데이터는 잘못된 데이터일 수 있습니다.
위에서도 언급하였지만 SQL에서 집계 함수는 일반적으로 NULL 값을 무시합니다.
예를 들어, COUNT() 함수는 NULL이 아닌 행의 수를 반환하고, SUM() 함수는 NULL 값을 제외한 값들의 합을 반환합니다.
그러나 COUNT(*)는 NULL 값을 포함하여 행의 총 수를 계산합니다.
COUNT(*)과 마찬가지로 COUNT(1)은 모든 행을 계산하지만 NULL 값을 제외합니다.
다음 테이블을 참조해주세요
항목 | 설명 |
COUNT(*) | NULL 값을 포함한 행의 수를 출력 |
COUNT(1) | NULL 값이 아닌 행의 수를 출력 |
COUNT(표현식) | 표현식의 값이 NULL 아닌 행의 수를 출력 |
SUN(표현식) | 표현식이 NULL 값인 것을 제외한 합계를 출력 |
ARG(표현식) | 표현식이 NULL 값인 것을 제외한 평균을 출력 |
MAX(표현식) | 표현식이 NULL 값인 것을 제외한 최대값을 출력 |
MIN(표현식) | 표현식이 NULL 값인 것을 제외한 최소값을 출력 |
STDDEV(표현식) | 표현식이 NULL 값인 것을 제외한 표준편차를 출력 |
VARIAN(표현식) | 표현식이 NULL 값인 것을 제외한 분산을 출력 |