GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类似Excel里面的透视表。
GROUP BY必须得配合聚合函数来用,分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)等

新建学校用户表:

CREATE TABLE `users` (
  `id` bigint(15) NOT NULL AUTO_INCREMENT COMMENT '主键id ',
	`school_id` bigint(15) NOT NULL COMMENT '学校id',
  `user_name` varchar(8) NOT NULL COMMENT '姓名 ',
  `user_price` decimal(13,3) DEFAULT NULL COMMENT '工资',
  `user_state` varchar(5) DEFAULT '1' COMMENT '01学生,02老师,03班主任,04校长',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间 ',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间 ',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='学校用户表';

1.分别按照年/月来统计用户入校的人数:
按年统计:

SELECT DATE_FORMAT(create_time,'%Y') as statistics_key,
count(*)  statistics_count 
FROM 
users
WHERE
create_time BETWEEN '2020-01-01 00:00:00' and '2021-03-30 00:00:00'  
GROUP BY  statistics_key 

在这里插入图片描述

按月统计:

SELECT DATE_FORMAT(create_time,'%Y-%m') as statistics_key,
count(*)  statistics_count 
FROM users
WHERE
create_time BETWEEN '2020-01-01 00:00:00' and '2021-03-30 00:00:00' 
GROUP BY  statistics_key 

在这里插入图片描述
2.分别按照职位来统计用户摸个时间段入校的人数:

SELECT user_state as statistics_key,
count(*) as statistics_count 
FROM
users
 WHERE create_time BETWEEN '2020-01-01 00:00:00' and '2021-03-30 00:00:00' 
 GROUP BY statistics_key

在这里插入图片描述
注意:

where要放在group by前面
group by 后面加条件只能用having关键字

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐