MySQL 06. MySQL - Table (조회2 그룹핑 group by)

|

생활코딩 - MySQL

그룹핑 (group by)

  • 특정 칼럼을 기준으로 데이터를 그룹핑한다.
  • 그룹이라고 하는 것은 여러개의 데이터가 어떻게 구성되어 있는지 원자화 시키는 것이다.
  • 각각의 그룹핑된 컬럼을 기준으로 특정한 다른 컬럼의 합계, 평균 등의 작업도 가능하다.

문법

SELECT * FROM 테이블명 GROUP BY 그룹핑 할 기준 칼럼명

예제

대상 테이블

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `id` tinyint(4) NOT NULL,
  `name` char(4) NOT NULL,
  `sex` enum('남자','여자') NOT NULL,
  `address` varchar(50) NOT NULL,
  `distance` INT NOT NULL,
  `birthday` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `student` VALUES (2, '박재숙', '남자', '서울',  10, '1985-10-26 00:00:00');
INSERT INTO `student` VALUES (1, '이숙경', '여자', '청주', 200, '1982-11-16 00:00:00');
INSERT INTO `student` VALUES (3, '백태호', '남자', '경주', 350, '1989-2-10 00:00:00');
INSERT INTO `student` VALUES (4, '김경훈', '남자', '제천', 190, '1979-11-4 00:00:00');
INSERT INTO `student` VALUES (8, '김정인', '남자', '대전', 200, '1990-10-1 00:00:00');
INSERT INTO `student` VALUES (6, '김경진', '여자', '제주', 400, '1985-1-1 00:00:00');
INSERT INTO `student` VALUES (7, '박경호', '남자', '영동', 310, '1981-2-3 00:00:00');

그룹핑 group by 예시

select sex from student group by sex;
# 결과값
+--------+
| sex    |
+--------+
| 남자    |
| 여자    |
+--------+

select sex,sum(distance), avg(distance) from student group by sex;
# 결과값
+--------+---------------+---------------+
| sex    | sum(distance) | avg(distance) |
+--------+---------------+---------------+
| 남자    |          1060 |      212.0000 |
| 여자    |           600 |      300.0000 |
+--------+---------------+---------------+