728x90
반응형
GROUP BY 란?
- 집계 함수 이다.
- DB 에서 데이터를 그룹화 할수 있다.
준비사항
https://vprog1215.tistory.com/145
GROUPY BY 에서 사용할 수 있는 함수들
함수명 | 내용 | 입력값 | 타입 |
SUM | 그룹별 합계를 구한다 | 컬럼 | 숫자타입만가능 |
AVG | 그룹별 평균을 구한다. | 컬럼 | 숫자타입만가능 |
MIN | 최소값을 구한다. | 컬럼 | 모든타입 가능 |
MAX | 최대값을 구한다. | 컬럼 | 모든타입 가능 |
stddev | 표준편차를 구한다. | 컬럼 | 숫자타입만 가능 |
VARIANCE | 분산 | 컬럼 | 숫자타입만 가능하다. |
COUNT | 갯수를 구한다. | 컬럼, * | 모든타입가능 |
예제 GROUP BY 로 수강목록을 듣는 학생수 구하기
아래 학생 테이블과 수강테이블을 조인하여 다음과 같은 데이터를 얻었다.
아래 데이터에서 수강과목별 듣는 학생수를 구하고 싶다 어떻게 해야될까?
STUDENT_ID | STUDENT_NAME | SUBJECT_NAME |
1 | Jenna | C++ |
2 | Dan | Java |
3 | Tom | Java |
4 | Grace | null |
GROUP BY
당연하다 GROUP BY 연습이므로 GROUP BY를 사용하면된다.
SUBJECT_NAME 으로 그룹을 먼저 건다.
그럼 수강과목기준으로 그룹이 만들어 진다.
그룹이 되었으므로 일반적인 출력은 그룹명만 출력이 가능하다
SELECT su.SUBJECT_NAME,
FROM students AS st
LEFT JOIN subjects AS su
ON st.SUBJECT_ID = su.SUBJECT_ID
GROUP BY SUBJECT_NAME;
출력결과
SUBJECT_NAME |
null |
C++ |
Java |
GROUP BY 에 COUNT 적용해서 수강하는 학생수 뽑기
SELECT COUNT(*), su.SUBJECT_NAME
FROM students AS st
LEFT JOIN subjects AS su
ON st.SUBJECT_ID = su.SUBJECT_ID
GROUP BY SUBJECT_NAME;
COUNT | SUBJECT_NAME |
1 | null |
1 | C++ |
2 | Java |
GROUP BY 에 COUNT 적용후 HAVING 절로 조건걸기
SELECT COUNT(*), su.SUBJECT_NAME
FROM students AS st
LEFT JOIN subjects AS su
ON st.SUBJECT_ID = su.SUBJECT_ID
GROUP BY SUBJECT_NAME
HAVING COUNT(*) > 1
COUNT | SUBJECT_NAME |
2 | Java |
728x90
반응형
'DataBase > DB 기초' 카테고리의 다른 글
[DB] Index 기본 (0) | 2023.02.09 |
---|---|
[DB] NoSQL (0) | 2021.08.19 |
[DB] Index 기초 (0) | 2021.08.19 |
[DB] Join (0) | 2021.08.05 |
[DB] 트랜잭션 (0) | 2021.07.21 |
댓글