본문 바로가기

프로그래밍/DataBase

[DateBase]그룹함수

그룹함수란

 하나 이상의 행을 그룹으로 묶어 연산하여 총합이나 평균등 하나의 결과로 나타내는 함수를 말한다.

 

그룹함수의 종류

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