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关键字



版权声明:本文为weixin_44699728原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44699728/article/details/115616521