❓ 그룹 함수
- 그룹함수는 테이블의 전체 행을,
- 하나 이상의 칼럼을 기준으로 칼럼 값에 따라 그룹화하여
- 그룹별로 결과를 출력하는 함수이다.
| 종류 | 설명 |
|---|
| COUNT | 행의 갯수 출력 |
| MAX | NULL을 제외한 모든행에서 최대값 출력 |
| MIN | NULL을 제외한 모든 행에서 최소값 출력 |
| SUM | NULL을 제외한 모든 행의 합계 |
| AVG | NULL을 제외한 모든 행의 평균값 |
📁 예제 1 : COUNT
SELECT COUNT(studno) FROM student WHERE grade = 3;
+
| COUNT(studno) |
+
| 3 |
+
1 row in set (0.02 sec)
📁 예제 2 : COUNT
- 101번 학과에 소속된 교수들의 보직 수당 조회
SELECT COMM FROM professor WHERE deptno = 101;
+
| COMM |
+
| 20 |
| 15 |
| NULL |
| NULL |
+
4 rows in set (0.00 sec)
- NULL 데이터 2건, 값이 결정된 데이터 2건
총 4건이 조회된다.
📁 예제 3 : COUNT
- 101학과에 소속된 교수들 중에서 보직수당을 받는 교수의 수를 조회하시오.
- COUNT함수는 지정된 컬럼에서 Null데이터는
제외하고 집계하기 때문에, 보직수당이 결정되지 않은 교수는 집계에서 제외된다.
SELECT COUNT(comm) FROM professor WHERE deptno = 101;
+
| COUNT(comm) |
+
| 2 |
+
1 row in set (0.00 sec)
- COUNT : 원래 NULL 데이터는 제외하고 집계
📁 예제 4 : COUNT
SELECT COUNT(*) FROM professor WHERE deptno = 101;
+
| COUNT(*) |
+
| 4 |
+
1 row in set (0.00 sec)
- 전체 데이터 수를 조회하기 위해서는 COUNT함수에
*을 지정하거나 Null데이터가 저장되어 있지 않은 컬럼을 지정한다.
- 전체 데이터 수를 조회할 경우 컬럼 이름을 지정하는 것 보다
*을 지정하는 것이 처리속도가 더 빠르다.(MySQL에 한함)
📁 예제 5 : MAX
- 최대값을 구하기 위한 Max함수 예제
- 급여를 가장 많이 받는 교수는 얼마를 받는가?
SELECT MAX(sal) FROM professor;
+
| MAX(sal) |
+
| 500 |
+
1 row in set (0.00 sec)
- 집계 함수들의 특징 : 결과가 항상 1개의 행이 나와야함. (1 row in set)
- 두개 이상의 결과를 보고싶다면 콤마로 연결
📁 예제 6 : MIN
- 최소값을 구하기 위한 Min함수 예제
- 급여를 가장 적게 받는 교수는 얼마를 받는가?
SELECT MIN(sal) FROM professor;
+
| MIN(sal) |
+
| 210 |
+
1 row in set (0.00 sec)
📁 예제 7 : SUM
- 합계를 계산하기 위한 SUM함수 예제
- 한달에 지급되는 교수의 급여는 모두 얼마인가?
SELECT SUM(sal) FROM professor;
+
| SUM(sal) |
+
| 3200 |
+
1 row in set (0.00 sec)
📁 예제 8 : AVG
- 평균을 구하기 위한 AVG함수 예제
- 학생들의 평균 키는 얼마인가?
SELECT AVG(height) FROM student;
+
| AVG(height) |
+
| 171.4706 |
+
1 row in set (0.00 sec)
📁 예제 9 : 다중 집계함수
- 101번 학과 학생들의 몸무게 평균과 합계를 출력하시오.
SELECT AVG(weight), SUM(weight) FROM student WHERE deptno = 101;
+
| AVG(weight) | SUM(weight) |
+
| 68.0000 | 544 |
+
1 row in set (0.00 sec)
- 집계함수를 두개 이상 사용할 때는 콤마(,)로 연결한다.
✏️ 연습문제
- 101번 학과 학생들 중에서 최대 키와 최소 키를 출력하여라
SELECT MAX(height), MIN(height) FROM student WHERE deptno = 101;
+
| MAX(height) | MIN(height) |
+
| 186 | 161 |
+
1 row in set (0.00 sec)