집계 함수를 사용하면 집합의 개수, 합계 등의 데이터를 구할 수 있다. 집합은 함수의 인자로 지정한다.
집합에 대해 계산한다 해서 집계 함수라 부른다. 따라서 결과값으로는 하나의 행(집계의 결과)을 반환한다.
COUNT : 인수로 주어진 집합의 개수를 구해 반환한다. NULL 값은 제외한다.
SELECT COUNT(*) FROM sample; -> sample 테이블의 행의 개수를 구해 반환한다.
SELECT COUNT(*) FROM sample WHERE name='money'; -> name이 money인 행의 개수를 구해 반환한다.
no | name |
1 | a |
2 | b |
3 | NULL |
위와 같은 테이블이 있을 때, SELECT COUNT(no), COUNT(name) FROM sample; -> COUNT(no)는 3을 반환하지만, COUNT(name)에 대해선 2를 반환한다. NULL은 제외하기 때문이다.
DISTINCT : 중복된 값을 제거하는 함수. SELECT와 함께 사용한다. 컬럼 명 앞에 붙여 사용한다.
no | name |
1 | a |
2 | b |
3 | b |
4 | c |
5 | NULL |
위 테이블을 보면 name 열에 b가 중복으로 있다.
SELECT name FROM sample; -> 모든 name 데이터를 가져온다. a,b,b,c,NULL
SELECT DISTINCT name FROM sample; -> 중복을 제거해서 가져온다. a,b,c,NULL
SELECT ALL name FROM sample; -> 모든 데이터를 가져온다. ALL은 안붙인 것이랑 같은 결과.
SELECT COUNT(ALL name), COUNT(DISTINCT name) FROM sample; -> 위 표에서 계산하면, 3과 2가 나올 것이다. NULL은 제외되기 때문에.
다른 집계 함수들.
SUM : 수치형 데이터들의 합을 반환하는 함수. 마찬가지로 NULL은 무시하고, 문자열형이나 날짜시간형 데이터는 구할 수 없다. EX) SELECT SUM(age) FROM sample;
AVG : 평균값을 구하는 함수. SUM(컬럼명) / COUNT(컬럼명) 와 같다. 만약 NULL이 있다면, CASE를 사용해 0으로 간주한 후에 계산할 수 있다. EX) SELECT AVG(age) FROM sample;
MIN, MAX : 최솟값, 최댓값을 구하는 함수. 이 함수들은 수치형뿐 아니라, 문자열형, 날짜시간형에도 사용할 수 있다.
EX) SELECT MIN(age), MAX(birthday) FROM sample;
'study > sql' 카테고리의 다른 글
데이터 추가, 삭제, 갱신 (0) | 2021.05.20 |
---|---|
정렬과 연산 - 날짜 데이터, CASE (0) | 2021.05.19 |
정렬과 연산 - 수치 연산(함수), 문자열 연산 (0) | 2021.05.17 |
정렬과 연산 - ORDER BY, LIMIT (0) | 2021.05.16 |
테이블에서 데이터 검색 (0) | 2021.05.14 |