최고의 MySQL의 GROUP BY 문 튜토리얼 2024년, 이 튜토리얼에서는 예를 들면 데모,를 배울 수 있습니다.
문 BY 그룹은 그룹으로 결과 집합에있는 하나 이상의 열을 기반으로.
열 그룹에서 우리는 COUNT, SUM, AVG 및 기타 기능을 사용할 수 있습니다.
SELECT column_name, function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name;
우리가 데이터베이스에 다음 데이터를 사용하기 전에이 장의 예는 다음과 같은 테이블 구조와 데이터를 사용합니다.
SET NAMES utf8; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for `employee_tbl` -- ---------------------------- DROP TABLE IF EXISTS `employee_tbl`; CREATE TABLE `employee_tbl` ( `id` int(11) NOT NULL, `name` char(10) NOT NULL DEFAULT '', `date` datetime NOT NULL, `singin` tinyint(4) NOT NULL DEFAULT '0' COMMENT '登录次数', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of `employee_tbl` -- ---------------------------- BEGIN; INSERT INTO `employee_tbl` VALUES ('1', '小明', '2016-04-22 15:25:33', '1'), ('2', '小王', '2016-04-20 15:25:47', '3'), ('3', '小丽', '2016-04-19 15:26:02', '2'), ('4', '小王', '2016-04-07 15:26:14', '4'), ('5', '小明', '2016-04-11 15:26:40', '4'), ('6', '小明', '2016-04-04 15:26:54', '2'); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
가져 오기가 성공 후 다음 SQL 문을 실행 :
mysql> set names utf8; mysql> SELECT * FROM employee_tbl; +----+--------+---------------------+--------+ | id | name | date | singin | +----+--------+---------------------+--------+ | 1 | 小明 | 2016-04-22 15:25:33 | 1 | | 2 | 小王 | 2016-04-20 15:25:47 | 3 | | 3 | 小丽 | 2016-04-19 15:26:02 | 2 | | 4 | 小王 | 2016-04-07 15:26:14 | 4 | | 5 | 小明 | 2016-04-11 15:26:40 | 4 | | 6 | 小明 | 2016-04-04 15:26:54 | 2 | +----+--------+---------------------+--------+ 6 rows in set (0.00 sec)
다음으로, 우리는 이름 데이터 테이블 그룹에 의해 문 GROUP을 사용하고, 각 사용자에 대한 레코드의 수를 카운트한다 :
mysql> SELECT name, COUNT(*) FROM employee_tbl GROUP BY name; +--------+----------+ | name | COUNT(*) | +--------+----------+ | 小丽 | 1 | | 小明 | 3 | | 小王 | 2 | +--------+----------+ 3 rows in set (0.01 sec)
롤업 같은 통계 실시 다음 패킷의 통계 데이터에 기초하여 구현되어있을 수있다 (SUM, AVG는 ko. 카운트).
예를 들어, 우리는 이름으로 하나 이상의 데이터 테이블 그룹 일 후 회수에게 등록 된 각 사용자를 계산한다 :
mysql> SELECT name, SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; +--------+--------------+ | name | singin_count | +--------+--------------+ | 小丽 | 2 | | 小明 | 7 | | 小王 | 7 | | NULL | 16 | +--------+--------------+ 4 rows in set (0.00 sec)
NULL은 기록의 모든 로그인 시도를 나타냅니다.
우리는 대신 NULL 이름을 설정 병합을 사용하여 구문을 병합 :
select coalesce(a,b,c);
매개 변수 설명 :! == NULL의 경우, B를 선택하고, b는 == null의 경우, 다음 C를 선택하면, A = 널 (null)는, 다음을 선택하면, ABC가 null의 경우, 널 (의미없는)을 반환합니다.
이름이 비어있는 경우 다음의 예는, 우리는 대신 총 수의 사용 :
mysql> SELECT coalesce(name, '总数'), SUM(singin) as singin_count FROM employee_tbl GROUP BY name WITH ROLLUP; +--------------------------+--------------+ | coalesce(name, '总数') | singin_count | +--------------------------+--------------+ | 小丽 | 2 | | 小明 | 7 | | 小王 | 7 | | 总数 | 16 | +--------------------------+--------------+ 4 rows in set (0.01 sec)