文章图片
【MySQL|mysql 分组查询和聚焦函数,教你更高级—DBA技能包04】
文章图片
文章图片
文章图片
《DBA技能包》系列是数据库技术储备专栏 , 这是第04期 , 讲了MySQL分组查询和聚焦函数的实战和应用 。
这一节内容 , 来通过一张测试表 , 进行 MySQL 分组查询和聚集函数的练习 。
1 数据准备
建表及数据准备 , 以便后面 SQL 练习:
use yzl; /* 使用yzl这个database */
drop table if exists student_info; /* 如果表student_info存在则删除表student_info */
CREATE TABLE `student_info` ( /* 创建表student_info */
`id` int(11) NOT NULL auto_increment
`stu_id` int(11) DEFAULT NULL COMMENT '学生ID'
`stu_name` varchar(30) DEFAULT NULL COMMENT '学生姓名'
`stu_class` varchar(30) DEFAULT NULL COMMENT '学生班级'
`stu_score` int(11) DEFAULT NULL COMMENT '学生分数'
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间'
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
CURRENT_TIMESTAMP
COMMENT '记录更新时间'
PRIMARY KEY (`id`)
KEY `idx_stu_id` (`stu_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into student_info(stu_idstu_namestu_classstu_score) values(1'zhang''1班'80)(2'wang''1班'90)(3'zhao''2班'80)(4'liu''2班'86)(5'duan''2班'88);
2 查询全表数据
查询全表数据 , 方便后面实验时进行对比 。
select * from student_info;
3 显示总人数
select count(*) from student_info;
count(*) 表示记录总数 。
4 显示每个班级的人数
select stu_classcount(*) from student_info group by stu_class;
group by 表示分组
该语句表示对 stu_class 字段分组 , 然后显示 stu_class 和每一组 stu_class 的数据量 。
5 按班级分开显示学生名字
select stu_classgroup_concat(stu_name) from student_info group by stu_class;
6 显示每个班的最高分
select stu_classmax(stu_score) as maxscore from student_info group by stu_class;
max 表示求最大值 。
SQL 表示按 stu_class 分组后 , 显示 stu_class 和每一组的 stu_score 最大值 。
7 显示每个班的平均分数
select stu_classavg(stu_score) as avgscore from student_info group by stu_class;
avg 表示求平均数 。
SQL 表示对 stu_class 分组后 , 显示 stu_class 和对应的 stu_score 平均值 。
8 显示每个班的总分
select stu_classsum(stu_score) as avgscore from student_info group by stu_class;
sum 表示求和
SQL 表示对 stu_class 分组后 , 显示 stu_class 和对应的 stu_score 总和 。
9 显示平均分大于或等于 85 的班级
select stu_classavg(stu_score) as avgscore from student_info group by stu_class having avgscore>=85;
- MySQL|“人肉”网暴频发,平台岂能无责?
- MySQL|启用低电量模式,iPhone 的充电速度会更快吗?
- MySQL|西安一码通系统崩溃技术分析
- MySQL|自媒体人选择很多,自媒体平台也内卷!
- MySQL|高性价比大功率电源、先马黑钻1000W金牌全模组电源 评测
- MySQL|外卖运营—月破万单的4个诀窍
- MySQL|元宇宙的背后,无非是又一次让美国芯片再次垄断全球市场
- MySQL|13分钟充入50%电量!256G骁龙8旗舰仅3199元,性价比没谁了
- MySQL|小米12才来,K50就来了?
- 马日福|市委经济工作会议分组讨论会上与会者谈感受找不足谋思路