대표적인 집계함수
COUNT()
,SUM()
,AVG()
,MIN()
,MAX()
SQL은 데이터베이스라 불리는 데이터 집합
을 다루는 언어이다. 이 같은 집합의 합계나 개수가 궁금하다면 SQL 제공 집계함수를 이용하여 간단 구현 가능
집계함수는 인수로 집합을 지정한다. (집합함수)
집합을 특정 방법으로 계산하여 그 결과를 반환
COUNT
: 인수로 주어진 집합의 개수를 구해 반환
COUNT(집합)
SELECT COUNT(*) FROM sample51;
집계함수의 특징은 복수의 값(집합)에서 하나의 값을 계산해내는 것이다. 집합으로부터 하나의 값을 반환한다. 이렇게 집합으로부터 하나의 값을 계산하는 것을 집계라고 부른다. (집계함수를 SELECT 구에 쓰면 WHERE구의 유무와 관계없이 결괏값으로 하나의 행을 반환한다.)
SELECT COUNT(*) FROM sample51 WHERE name = 'A';
SELECT 구는 WHERE구보다 나중에 내부적으로 처리된다. 따라서 WHERE 구로 조건을 지정하면 테이블 전체가 아닌, 검색된 행이 COUNT로 넘겨진다. 즉, WHERE 구의 조건에 맞는 행의 개수를 구할 수 있다.
COUNT 인수로 열명을 지정할 수 있다. 그 열에 한해서 행의 개수를 구할 수 있다. *
를 인수로 사용할 수 있는 것은 COUNT 함수 뿐이다. 다른 집계함수에서는 열명이나 식을 인수로 지정한다.
집계함수에서는 집합 안에 NULL의 값이 있을 경우 이를 제외하고 처리한다.
SELECT COUNT(no), COUNT(name) FROM sample51;
집합을 다룰 때, 중복된 값이 있는 여부가 문제가 될수 있다. 데이터가 서로 중복되지 않는 경우 유일한 값을 가진다, 중복되지 않는다라는 표현을 사용한다.
SQL이 SELECT 명령은 이러한 중복된 값을 제거하는 함수를 제공한다. -> DISTINCT
SELECT DISTINCT name FROM sample51;
SELECT구에서 DISTINCT를 지정하면 중복된 데이터를 제외한 결과를 클라이언트로 반환한다. 중복여부는 SELECT구에 지정된 모든 열을 비교해 판단한다. (ALL
: 중복 포함(기본값))
name열에서 NULL 값을 제외하고, 중복하지 않는 데이터의 개수르 ㄹ구하는 경우
SELECT COUNT(ALL name), COUNT(DISTINCT name) FROM sample51;