Backend/SQL

SQL - GROUP BY, HAVING 절

rachel_13 2022. 11. 5. 03:32

집계 함수란(Aggregate Function)?

: 여러 행들의 그룹이 모여서 그룹당 하나의 결과를 반환하는 다중행 함수

 

[특징]

- GROUP BY절 : 행들을 소그룹화 한다.

- SELECT 절, HAVING 절, ORDER BY 절에서 사용할 수 있다. 

[종류]

집계 함수 사용목적
COUNT(*) NULL 값 포함, 행의 수 계산
COUNT(표현식) 표현식이 참인 행의 수 계산 (NULL값 제외)
SUM([DISTINCT | ALL] 표현식)  표현식의 NULL값을 제외한 합계
AVG([DISTINCT | ALL] 표현식)  표현식의 NULL값을 제외한 평균
MAX([DISTINCT | ALL] 표현식)  표현식의 최대값
MIN([DISTINCT | ALL] 표현식)  표현식의 최소값
STDDEV([DISTINCT | ALL] 표현식)  표현식의 표준편차
VARIAN([DISTINCT | ALL] 표현식)  표현식의 분산
기타 통계 함수 벤더별로 다양한 통계식 제공
SELECT COUNT(COMM) AS 인센, MAX(SAL) AS 일등 FROM EMP;

 

1. GROUP BY 절

SELECT [DISTINCT] 칼럼명 [ALIAS명] FROM 테이블명 [WHERE 조건식] [GROUP BY 칼럼이나 표현식] [HAVING 그룹조건식];

- 통계정보는 NULL값을 제외하고 산출된다는 것을 명심하자

- GROUP BY절에서는 SELECT절과 달리 ALIAS명 사용할 수 없다.

- WHERE 절 이후에 수행된다.

- HAVING 절 : GROUP BY절에 의한 소그룹이 생성된 후, 그 소그룹에 제약조건을 거는 것

 

ex) K-리그 선수들의 포지션별 평균키는 어떻게 되는가?

(1) GROUP BY 절 사용 안했을 때

SELECT POSITION 포지션, AVG(HEIGHT)평균키 FROM PLAYER;

-> 에러 발생. 그룹 단위가 표시되어 있지 않다.

(2) 포지션별 최대키, 최소키, 평균키를 출력한다.

SELECT POSITION 포지션, COUNT(*) 인원수, COUNT(HEIGHT) 키대상, MAX(HEIGHT) 최대키, MIN(HEIGHT) 최소키, AVG(HEIGHT) 평균키 FROM PLAYER GROUP BY POSITION;

 

2. HAVING 절

SELECT POSITION 포지션, ROUND(AVG(HEIGHT) 평균키 FROM PLAYER GROUP BY POSITION HAVING AVG(HEIGHT) >=180;

 

'Backend > SQL' 카테고리의 다른 글

SQL 기본 및 활용 (4) - WHERE 절  (0) 2022.11.05
SQL 기본 및 활용 (3) - 트랜잭션  (0) 2022.11.05
SQL 기본 및 활용 (2) - DML  (0) 2022.11.04
SQL 기본 및 활용 (1) - DDL  (0) 2022.11.04