[해당 포스트는 개인적으로 공부를 하고 차후에 참고용으로 하고자 작성한 것입니다.
따라서 잘못된 부분이나 부족한 부분이 있을 수 있기에 참고하시기 바랍니다.]
Table 내에 데이터를 집계 내어 출력하고자 하는 일이 있을 때 사용 문법이 Group By다.
Group By는 Where 절 다음에 사용할 수 있으며, 특정 Column을 기준으로 그룹으로 만든다.
SELECT 컬럼 FROM 테이블
WHERE condition
GROUP BY 컬럼
HAVING condition;
Column을 Group으로 잡으면 해당의 UNIQUE한 값에 따라서 데이터를 Group로 만들고, 중복된 열은 제거가 된다.
다음의 쿼리를 입력하여 예제를 실습해보자.
create database ldhTest;
use ldhTest;
CREATE TABLE client
(
id INT NOT NULL primary key auto_increment,
name VARCHAR(40) NOT NULL,
age INT NOT NULL,
type VARCHAR(20) NOT NULL
);
INSERT INTO client (name, age, type) VALUES ('DHL', 27, 'A');
INSERT INTO client (name, age, type) VALUES ('EHL', 29, 'B');
INSERT INTO client (name, age, type) VALUES ('FHL', 27, 'A');
INSERT INTO client (name, age, type) VALUES ('GHL', 30, 'C');
INSERT INTO client (name, age, type) VALUES ('HHL', 24, 'F');
INSERT INTO client (name, age, type) VALUES ('IHL', 20, 'B');
INSERT INTO client (name, age, type) VALUES ('JHL', 26, 'A');
INSERT INTO client (name, age, type) VALUES ('KHL', 24, 'E');
INSERT INTO client (name, age, type) VALUES ('LHL', 23, 'E');
INSERT INTO client (name, age, type) VALUES ('MHL', 21, 'C');
다음과 같이 Client Table이 존재할 때 Type 별로 Group을 지어보자.
select type, COUNT(*) from client group by type;
Group By와 같이 올 수 있는게 HAVING 뿐만 아니라 COUNT도 주로 쓰인다.
집계를 내어 개수를 출력할 때 COUNT를 사용한다. COUNT도 원하는 Column을 선택해서 개수를 셀 수 있다.
이번엔 HAVING을 추가하여 Group의 조건을 추가해보자.
HAVING은 Group절의 Where절로 생각하면 된다. Group 된 곳에 조건을 주어 보고자 하는 것만 가져올 수 있다.
아래의 예제는 Count한 개수가 3개 이상인 Type을 출력하는 예제이다.
select type, COUNT(*) from client group by type having count(*) >= 3;
'Database > MySQL' 카테고리의 다른 글
[MySQL] JOIN (INNER, OUTER[LEFT, RIGHT]) 정리 (0) | 2019.09.05 |
---|---|
[MySQL] MySQL 테이블 [생성/수정/삭제] 실습 (1) | 2019.09.05 |
[MySQL] Table에 한글로 입력된 데이터가 삽입되지 않을 때 (0) | 2019.09.05 |
[MySQL] 특정 IP 대역 개방하여 외부에서 MySQL 접속 / 사용자 권한 (0) | 2019.09.05 |
[MySQL] MySQL 초기 설치시 Access denied가 뜰 경우 (0) | 2019.09.05 |