본문 바로가기
DBMS

9. 그룹 함수 : Aggregate Function

by suehyune12 2022. 3. 13.

그룹함수

여러개의 레코드의 필드 값을 계산하여 값을 내는 함수, 다양한  그룹함수들이 있다.

 

종류

  • GROUP BY : 그룹을 묶는 단위
  • HAVING : 그룹함수 결과에 대한 조건 (WHERE 와 헷갈리지 않도록 주의)

 

Name Description
AVG() 평균값 출력
BIT_AND() 비트 연산 AND 값
BIT_OR() 비트 연산 OR 값
BIT_XOR() 비트 연산 XOR값
COUNT(DISTINCT) 서로 구분되는 레코드 개수 출력
COUNT() 레코드 개수 출력
GROUP_CONCAT() 문자열 연결하여 출력
MAX() 최대값 출력
MIN() 최소값 출력
STD() 표준편차
STDDEV_POP() Return the population standard deviation
STDDEV_SAMP() Return the sample standard deviation
STDDEV() Return the population standard deviation
SUM() 합산 출력
VAR_POP() Return the population standard variance
VAR_SAMP() Return the sample variance
VARIANCE() 분산출력

 


 

  • GROUP BY  = 그룹을 묶는 단위

 

 

그룹함수에서 NULL값은

기본적으로 계산에서

제외된다.

 

 

 

실습 : Professor 테이블에서 학과별로 교수들의 평균 보너스를 출력하세요.

( 그룹함수는 null 값은 계산안하기 때문에 null 허용 필드에 대해 계산할때는 반드시 ifnull 등을 사용)

 

 

보너스를 받는 사람들만 평균

보너스를 받는 사람과 안받는 사람들의 평균

 

 

 

 

SELECT 절에 그룹함수 아닌 것과 그룹함수는 같이 올수는 없다.

이 경우 그룹함수가 아닌 것들은 GROUP BY 로 묶여야 할 것이다.

 

 

 

실습: t_professor 테이블 : 학과별(deptno) 그리고 직급별(position)로 교수들의 평균 급여를 계산하여 출력하세요

 

 

 

 

 

 

SELECT  deptno, position, avg(pay) "평균 급여"

FROM t_professor

GROUP BY deptno, position;

 

 

 

그룹함수 부분은 WHERE 사용 불가.
그룹함수를 사용하더라도 다른 부분은 WHERE 사용 가능

 

 

 


 

  • HAVING = 그룹함수 결과에 대한 조건 (WHERE 와 헷갈리지 않도록 주의)

 

WHERE 대신 HAVING 사용

 


 

  • SELECT 쿼리문 순서

SELECT [컬럼명 또는 표현식]  ----------------- 

FROM [테이블명, 뷰명]    ----------------------

WHERE [조건절]     -----------------------------

GROUP BY [그룹할 컬럼] ----------------------- ③   * GROUP BY가 WHERE보다 순서가 늦기 때문에 사용 불가

HAVING [그룹함수 조건절]   -------------------

ORDER BY [정렬열] [ASC/DESC]; ---------------

 

 

 

 

실습 : t_emp 테이블: 매니저별(MGR)로 관리하는 직원들의

‘매니저’, ‘직원수’와 ‘급여총액’과 ‘급여평균’과

‘교통비 (COMM) 평균’ 지급액 을 출력하세요. 

단 사장님은 (job = president)제외 

 

 

 

 

 

SELECT mgr "매니저", count(*) "직원수", pay "급여총액",

avg(pay) "급여평균",  avg(ifnull(comm, 0)) "교통비평균"

FORM t_emp

WHERE job != 'PRESIDENT'

GROUP BY mgr ;

 

 

 

'DBMS' 카테고리의 다른 글

11. 가상 테이블 : View  (0) 2022.03.14
10. Join & Sub Query  (0) 2022.03.13
8. 단일행 함수 : Single - Row Function  (0) 2022.03.10
7. DCL : Commit & Rollback  (0) 2022.03.08
6. MySQL : 연산자, ORDER BY  (0) 2022.02.28