그룹함수란
하나 이상의 행을 그룹으로 묶어 연산하여 총합이나 평균등 하나의 결과로 나타내는 함수를 말한다.
그룹함수의 종류
SUM, AVG, MAX, MIN, COUNT 등
그룹함수 규칙
- NULL값은 무시된다.
- LOW가 없는 테이블에 그룹함수 COUNT()를 사용 시 0이 출력되며 SUM()를 사용시 NULL 값이 출력된다.
- COUNT, MAX 와 MIN은 문자, 숫자, 날짜 데이터 모두에게서 사용할 수 있다. 그러나 AVG, SUM, VARIANCE, STDDEV는 NUMBER만 사용 가능하다.
- EXPR이 있는 인수들의 자료 형태는 CHAR, VARCHAR2, NUMBER, DATE 형이 될 수도 있다.
- SELECT절에 그룹함수와 일반 컬럼이 함께 사용될 때, 일반 컬럼을 GROUP BY절에 사용하여야 한다.
SUM
- 지정한 컬럼 값의 합계를 반환하는 함수(NULL은 제외)
문법
SELECT SUM(컬럼명)
FROM 테이블명;
COUNT
- 테이블에서 조건을 만족하는 행의 개수를 반환하는 함수
문법
SELECT COUNT(*)
FROM 테이블명;
= 해당 테이블의 모든 행의 수를 나타낸다.
NULL 값과 중복 값을 허용한다.
SELECT COUNT(컬럼명)
FROM 테이블명;
= 지정한 컬럼에서 값이 있는 행의 수를 구한다.
NULL 값은 무시하고 중복 값은 허용한다.
SELECT COUNT(DISTINCT 컬럼명)
FROM 테이블명;
= 지정한 컬럼에서 중복을 제거한 행의 수를 구한다.
NULL 값과 중복 값을 무시한다.
MAX / MIN
MAX = 지정한 컬럼 값들 중에서 최대값을 구하는 함수
MIN = 지정한 컬럼 값들 중에서 최소값을 구하는 함수
문법
SELECT MAX or MIN(컬럼명)
FROM 테이블명;
AVG
- 지정한 컬럼 값의 평균을 반환하는 함수
문법
SELECT AVG(칼럼명)
FROM 테이블명;
GROUP BY
특정 속성을 기준으로 그룹화 하여 검색할 때 그룹화 할 속성을 지정한다.
문법
SELECT 컬럼 A, 그룹함수(컬럼명)
FROM 테이블명
GROUP BY 컬럼 A;
사용 예시
SELECT department_id, SUM(salary)
FROM employees
GROUP BY department_id;
employees 테이블에서, department_id 칼럼의 데이터가 같은 것들끼리 묶어 salary의 합계를 나타낸다.
출력 결과
HAVING
GROUP BY가 사용되는 경우 조건절에 WHERE대신 HAVING을 사용해야한다.
즉, WHERE은 그룹화 하지 않은 조건만 가능하고 HAVING은 그룹화 한 데이터에 대한 조건만이 가능하다.
문법
SELECT 그룹함수(컬럼명)
FROM 테이블명
GROUP BY 컬럼명
HAVING 조건절;
사용 예시
앞서 보였던 예시에서 조건절인 HAVING을 추가하여 salary의 합계가 10000을 초과하는 값을 출력해보자.
SELECT department_id, SUM(salary)
FROM employees
GROUP BY department_id;
HAVING SUM(salary) > 10000;
출력 결과
위의 예시에서 salary의 합계가 10000을 초과하는 결과 값만 출력되는 것을 볼 수 있다.
'프로그래밍 > DataBase' 카테고리의 다른 글
[DataBase]뷰 (0) | 2021.04.19 |
---|---|
[DateBase]테이블 복사 (0) | 2021.04.07 |
[DataBase]일반 함수 (0) | 2021.03.31 |
[DataBase]문자함수 (0) | 2021.03.23 |
[DateBase]ORDER BY (0) | 2021.03.23 |