DB + SQL

[SQL] - SQL 그룹집계 함수

dev_SiWoo 2020. 8. 24. 17:39

SQL에서 지원하는 집계함수는 COUNT(빈도), SUM(합), AVG(평균), MIN(최소값),

MAX(최대값), VARIANCE(분산), STDDEV(표준편차)가 존재한다.

 

1. COUNT() 

예제1. 교수들은 몇명인가?

SELECT COUNT(*), COUNT(bonus) FROM professor;

예제2. 컴퓨터공학과 학생수를 구하여라

SELECT NAME, COUNT(*) FROM student WHERE student.major1=101;

 집계합수가 들어가는 순간 그룹핑이 되어 다른 변수를 출력하라고해도 가장 첫번째 ROW만 출력하게된다.

 

2.SUM()

 예제2. 교수 급여합계를 구하라

SELECT SUM(salary*12+bonus), SUM(salary*12+IFNULL(bonus,0)) FROM professor;

집계함수는 null이 존재하는 경우 해당 row를 계산에 포함하지 않는다. 따라서 만약 null 값을 0으로 계산하여 포함해야하는 경우 위와 같이 IFNULL을 이용하여 사용한다.

 

3. AVG()

 예제3. 1학년 학생의 키와 몸무게의 평균을 구하라

SELECT avg(height), avg(weight) FROM student WHERE grade =1;

4. MIN(), MAX(), VARIANCE(), STDDEV()

 예제4. 직원 연봉 중 최소값과 최대값 그리고 분산과 표준편차를 구하라

SELECT MAX(salary), MIN(salary), VARIANCE(salary), STDDEV(salary) FROM professor;

#. 참고사항

SELECT * FROM emp
   WHERE salary = MAX(salary);

위 처럼 집계함수를 조건문으로는 사용할 수 는 없다.