728x90
반응형
GROUP BY 란?
- 집계 함수 이다.
- DB 에서 데이터를 그룹화 할수 있다.
준비사항
https://vprog1215.tistory.com/145
[DB] Join
Join 이란? DB의 테이블을 만들때 효율성과, 가독성, 중복데이터를 피하기 위해 여러개의 Table을 만든다. Join을 이용하여 나눠진 테이블을 조합할수 있다. 준비사항 H2를 설치하여 다음과 같이 SQL
vprog1215.tistory.com
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 |
댓글