[MySQL] 그룹 함수 [SELECT]

심진주·2024년 10월 13일

MySQL

목록 보기
8/10
post-thumbnail

❓ 그룹 함수

  • 그룹함수는 테이블의 전체 행을,
  • 하나 이상의 칼럼을 기준으로 칼럼 값에 따라 그룹화하여
  • 그룹별로 결과를 출력하는 함수이다.
종류설명
COUNT행의 갯수 출력
MAXNULL을 제외한 모든행에서 최대값 출력
MINNULL을 제외한 모든 행에서 최소값 출력
SUMNULL을 제외한 모든 행의 합계
AVGNULL을 제외한 모든 행의 평균값

📁 예제 1 : COUNT

  • 3학년 학생은 총 몇 명인가?
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

  • 101학과에 소속된 교수는 모두 몇 명인가?
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)

0개의 댓글