Aggregate Function(집계 함수)란 데이터베이스에서 데이터를 그룹화하거나 집계할 때 사용되는 함수들이다. Aggregate Function은 여러 개의 데이터를 입력 받아 그룹화하여 단일 결과를 출력한다. SQL에서는 여러 Aggregate Function을 제공하며, 이들을 사용하여 데이터를 쉽게 요약하고 비교할 수 있다.
COUNT 함수는 그룹화된 행의 개수를 계산한다. 특정 칼럼의 값이 NULL인 경우, 해당 행은 계산하지 않는다.
SELECT COUNT(*) FROM 테이블명;
SUM 함수는 그룹화된 행의 합계를 계산한다. NULL 값은 무시한다.
SELECT SUM(칼럼명) FROM 테이블명;
AVG 함수는 그룹화된 행의 평균을 계산한다. NULL 값은 무시한다.
SELECT AVG(칼럼명) FROM 테이블명;
MAX 함수는 그룹화된 행의 최대값을 계산한다. NULL 값은 무시한다.
SELECT MAX(칼럼명) FROM 테이블명;
MIN 함수는 그룹화된 행의 최소값을 계산한다. NULL 값은 무시한다.
SELECT MIN(칼럼명) FROM 테이블명;
SQL에서 Group By는 데이터를 그룹화하여 집계 함수(Aggregate Function)와 함께 사용하여 결과를 출력하는 기능이다. 이를 통해 데이터베이스에서 원하는 그룹 단위로 데이터를 분류하고, 집계 함수를 사용하여 각 그룹의 대표값을 출력할 수 있다.
SELECT [그룹화할 칼럼], [집계 함수] FROM [테이블명] GROUP BY [그룹화할 칼럼];
예제
+--------+-------+--------+
| 이름 | 국어 | 영어 |
+--------+-------+--------+
| 홍길동 | 90 | 80 |
| 김철수 | 70 | 80 |
| 이영희 | 80 | 90 |
| 박민수 | 60 | 70 |
+--------+-------+--------+
SELECT 국어, AVG(영어) FROM 테이블명 GROUP BY 국어;
+--------+--------+
| 국어 | AVG(영어) |
+--------+--------+
| 60 | 70.0 |
| 70 | 80.0 |
| 80 | 90.0 |
| 90 | 80.0 |
+--------+--------+
SQL에서 HAVING은 집계 함수(aggregation function)를 사용해 데이터를 그룹화한 뒤, 그룹화된 결과 중 조건에 맞는 데이터를 가져오는 역할을 한다. 이를 통해 WHERE절로는 처리할 수 없는 그룹화된 데이터의 필터링을 가능하게 한다.
HAVING 절은 SELECT 문과 함께 사용되며, WHERE 절 다음에 위치하게 된다. HAVING 절은 WHERE 절과 비슷한 문법을 가지고 있지만, WHERE절에서는 개별 레코드에 대한 조건을 검색하고, HAVING절은 GROUP BY로 그룹화된 데이터 집합의 집계 값을 검색한다.
예제) 특정 지역에서 2019년에 판매된 제품 중에서 가장 많이 판매된 상위 10개의 제품을 찾으려고 한다.(총 판매량이 1,000개 이상인 상위 10개의 제품이 선택)
SELECT ProductID, SUM(Quantity) as TotalSold
FROM Sales
WHERE Region = 'Europe' AND YEAR(OrderDate) = 2019
GROUP BY ProductID
HAVING TotalSold > 1000
ORDER BY TotalSold DESC
LIMIT 10;
HAVING절은 집계 함수를 필터링하는 데 사용되며, WHERE 절은 집계 함수를 사용할 수 없다. WHERE절은 개별 레코드를 필터링하기 때문에, 그룹화된 데이터 집합을 필터링하는 데 사용할 수 없다. 따라서 HAVING 절은 그룹화된 데이터에 대한 필터링에만 사용된다.
또한, HAVING절은 GROUP BY 절 다음에 작성되어야 한다. GROUP BY 절은 데이터를 그룹화하는 데 사용되며, 이후 HAVING 절은 그룹화된 데이터에 대한 필터링에 사용된다.
HAVING절은 집계 함수를 사용하여 그룹화된 데이터에 대한 필터링을 수행하는 데 유용하다. 이를 통해 데이터베이스에서 원하는 데이터를 효과적으로 추출할 수 있다.