| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 자바기초
- 자바문자열연결
- equals()
- MySQL
- 청년적금
- 신한은행청년희망적금
- 2022청년희망적금
- 공부
- 자바배열
- apachetomcat
- Java
- 개발공부
- 저축장려금
- Eclipse
- 자바공부
- insert
- 참조변수
- mysql오류
- StringBuffer
- 청년희망적금
- ToString()
- 청년희망적금미리보기
- 자바
- 이클립스
- 배열함수
- 자바강의노트
- if문
- 자바스크립트
- 이클립스설치
- 자바스크립트배열
- Today
- Total
eterno
[MySQL] GROUP BY 절로 동일 컬럼 묶어서 계산하기 본문

GROUP BY 란?
테이블에서 특정 속성의 값이 같은 투플을 모아 그룹을 만들고, 그룹별로 검색을 하기 위해 GROUP BY 키워드를 사용한다. 그룹에 대한 조건을 추가하려면 GROUP BY 키워드를 HAVING 키워드와 함께 사용하면 된다.
출처) 네이버 지식백과
SELECT 절 실행 순서
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
GROUP BY 사용법
SELECT 조회할 컬럼명
FROM 테이블명
WHERE 조건문
GROUP BY 그룹으로 묶을 컬럼명
HAVING 그룹내 조건
ORDER BY 정렬기준
** 그룹내 조건이 없다면 HAVING은 생략가능( WHERE이랑 헷갈리지 말기!)
GROUP BY 절에서 자주 사용하는 집계함수
COUNT(), SUM(), AVG(), MAX(), MIN(), STDEV(), VAR(), STRING_AGG()
그룹화 예제 테이블 : STUDENT

예제) STUDENT테이블을 GRADE 를 그룹화 하여 합계 구하기
SELECT GRADE,
SUM(MATH) AS MATH_SUM,
SUM(ENGLISH) AS ENG_SUM,
SUM(KOREAN) AS KOR_SUM
FROM STUDENT
GROUP BY GRADE;
결과)

* GROUP BY 할때 문자열로 된 숫자는 CAST(데이터 타입 변경) 해주어야 합계가 가능
=> CAST ( 변경할 컬럼명 AS 변경할 데이터타입)
그룹화한 데이터 조건 추가하기
예제) STUDENT테이블에서 GRADE가 2이상인 데이터를 그룹화 하여 조회
SELECT GRADE,
SUM(MATH) AS MATH_SUM,
SUM(ENGLISH) AS ENG_SUM,
SUM(KOREAN) AS KOR_SUM
FROM STUDENT
GROUP BY GRADE
HAVING GRADE >= 2;
결과)

그룹별 소계(합계) 구하는 WITH ROLLUP
GROUP BY 그룹화할 컬럼명 WITH ROLLUP ;
예제) STUDENT 테이블에 GRADE 별로 그룹화하여 소계 구하기
SELECT GRADE, NAME,
SUM(MATH) AS MATH_SUM,
SUM(ENGLISH) AS ENG_SUM,
SUM(KOREAN) AS KOR_SUM
FROM STUDENT
GROUP BY GRADE, NAME WITH ROLLUP;
결과)

그룹별 함수의 데이터 값이 null로 나오는데 다른 값으로 변경하고 싶다면
그룹화된 컬럼에 COALESCE을 사용하면 된다.
=> COALESCE(컬럼명, '변경할 데이터 값')
SELECT COALESCE(GRADE, '합계') AS GRADE,
COALESCE(NAME,'등급별합계') AS NAME,
SUM(CAST(MATH AS SIGNED)) AS MATH_SUM,
SUM(CAST(ENGLISH AS SIGNED)) AS ENG_SUM,
SUM(CAST(KOREAN AS SIGNED)) AS KOR_SUM
FROM STUDENT
GROUP BY GRADE, NAME WITH ROLLUP;
결과)

참고) https://gent.tistory.com/505#h3_1
'DB > MYSQL' 카테고리의 다른 글
| [MySQL] JSON 데이터 조회하기 (1) | 2023.03.04 |
|---|---|
| [MySQL] JSON 데이터 객체, 배열 INSERT 하기 (0) | 2023.02.12 |
| [MySQL] 날짜 데이터 타입 및 함수 (0) | 2023.02.10 |
| [MySQL] 데이터베이스 및 테이블 생성(INSERT, SELECT, DROP) (0) | 2023.02.09 |
| [MySQL] HeidiSQL 설치 (0) | 2023.02.05 |