-
728x90
Aggregate 함수
SQL은 다양한 집계 함수를 제공한다.
SQL 집계 함수의 메인 아이디어는 다수의 입력을 취하고 단일 출력을 반환하는 것이다.
자주 쓰이는 집계 함수들은 다음과 같다.
- AVG() - 평균값을 반환한다
- COUNT() - 값의 수를 반환한다.
- MAX() - 최댓값을 반환한다
- MIN() - 최솟값을 반환한다.
- SUM() - 값의 합계를 반환한다.
Aggregate 함수의 기본적인 문법은 다음과 같다.
<AVG> SELECT AVG(column_name) FROM table_name WHERE condition; <COUNT> SELECT COUNT(column_name) FROM table_name WHERE condition; <MAX> SELECT MAX(column_name) FROM table_name WHERE condition; <MIN> SELECT MIN(column_name) FROM table_name WHERE condition; <SUM> SELECT SUM(column_name) FROM table_name WHERE condition;
Aggregate 함수 사용 시 주의할 점
- 집계 함수는 SELECT절이나 HAVING절에서만 호출 가능하다.
- AVG() 함수는 소수 값을 반환한다.
(더 정확한 표시를 위해서 ROUNT() 함수를 사용할 수 있다) - COUNT() 함수는 단순히 데이터의 수를 반환하므로, 컨벤션을 따라 COUNT(*)와 같은 식으로 사용하면 된다.
Aggregate 함수 사용하기
AVG()
Film이란 테이블에서
replacement_cost
컬럼의 평균값을 요청해보자.SELECT AVG(replacement_cost) FROM film;
틀린 점은 없지만 AVG 함수는 소수 값을 반환하기 때문에
19.9840000...
같은 소수 값을 반환할 것이다. 앞서 말했던 것처럼 여기서 ROUND 함수를 원하는 소수점 자리와 함께 사용할 수 있다.SELECT ROUND(AVG(replacement_cost), 2) FROM film;
위와 같이 ROUND를 사용했을 때
19.98
이 반환된다.MAX() & MIN()
마찬가지로 film이란 테이블에서
replacement_cost
컬럼의 최댓값과 최솟값을 요청해보자.<MAX> SELECT MAX(replacement_cost) FROM film; <MIN> SELECT MIN(replacement_cost) FROM film;
위와 같이 최댓값과 최솟값을 구하는 것이 어렵지 않지만, 주의해야 할 점이 하나 있는데, 바로 집계 함수는 많은 입력을 취하고 단일 출력을 조회한다는 것이다. 즉, 한 가지의 집계 함수를 한 컬럼을 위해 호출하기 때문에 단일 객체를 반환한다는 것이다.
그러므로 아래와 같은 예제를 실행했을 때 에러가 발생하게 된다.
SELECT MAX(replacement_cost), film_id FROM film;
하지만 MAX()와 MIN() 함수를 같이 사용하는 경우에는 둘 다 단일의 값을 반환하기 때문에 같이 사용이 가능하다.
SELECT MAX(replacement_cost), MIN(replacement_cost) FROM film;
728x90'Back-end > SQL' 카테고리의 다른 글
SQL HAVING절 (0) 2021.05.31 SQL GROUP BY절 (0) 2021.05.31 SQL LIKE & ILIKE연산자 (0) 2021.05.30 SQL IN 연산자 (0) 2021.05.30 SQL BETWEEN 연산자 (0) 2021.05.30 댓글