sql查询语句之平均分、最高最低分及排序语句


Posted in MySQL onMay 30, 2022

前言

以mysql为例,汇总sql查询最高分、最低分、平均分等sql语句,oracle语法类似,可自行修改以下sql语句

创建两个数据库表,一个学生表、一个考试成绩表

DROP TABLE IF EXISTS `score`;
CREATE TABLE `score`  (
  `u_id` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '编号',
  `object_no` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '课程编号',
  `students_no` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '学号',
  `score` int(11) NULL DEFAULT NULL COMMENT '分数'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

INSERT INTO `score` VALUES ('1', '100', 's100', 80);
INSERT INTO `score` VALUES ('2', '100', 's200', 59);
INSERT INTO `score` VALUES ('3', '100', 's300', 79);
INSERT INTO `score` VALUES ('4', '200', 's100', 54);
INSERT INTO `score` VALUES ('5', '200', 's200', 96);
INSERT INTO `score` VALUES ('6', '200', 's300', 74);
INSERT INTO `score` VALUES ('7', '300', 's100', 65);
INSERT INTO `score` VALUES ('8', '300', 's200', 80);
INSERT INTO `score` VALUES ('9', '200', 's400', 62);
INSERT INTO `score` VALUES ('10', '300', 's400', 56);
INSERT INTO `score` VALUES ('11', '100', 's400', 70);
SET FOREIGN_KEY_CHECKS = 1;

DROP TABLE IF EXISTS `students`;
CREATE TABLE `students`  (
  `students_no` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '编号',
  `students_name` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名',
  `sex` varchar(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',
  PRIMARY KEY (`students_no`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

INSERT INTO `students` VALUES ('s100', '张三', '1');
INSERT INTO `students` VALUES ('s200', '李四', '2');
INSERT INTO `students` VALUES ('s300', '张三', '1');
INSERT INTO `students` VALUES ('s400', '王五', '1');
SET FOREIGN_KEY_CHECKS = 1;

数据表数据

sql查询语句之平均分、最高最低分及排序语句

sql查询语句之平均分、最高最低分及排序语句

查询各课程的考试学生人数

select object_no as '课程编号', count(DISTINCT students_no) '考试人数' from score group by object_no

sql查询语句之平均分、最高最低分及排序语句

查询各科成绩最高分和最低分

select object_no as '课程编号',max(score) as '最高分',min(score) as '最低分' from score group by object_no

sql查询语句之平均分、最高最低分及排序语句

查询每门课程被选修的学生数

select object_no as '课程编号', count(DISTINCT students_no) as '学生编号' from score group by object_no

sql查询语句之平均分、最高最低分及排序语句

查询男生、女生人数

select sex '性别',count(DISTINCT students_no) '数量' from students group by sex

sql查询语句之平均分、最高最低分及排序语句

查询平均成绩

select students_no as '学生编号',avg(score) as '平均成绩' from score group by students_no

sql查询语句之平均分、最高最低分及排序语句

查询平均成绩大于70分学生的学号和平均成绩

select students_no as '学生编号',avg(score) as '平均成绩' from score group by students_no HAVING avg(score)>70

sql查询语句之平均分、最高最低分及排序语句

查询学生考试参与考试课程数量

select students_no as '学生编号',count(object_no) as '课程编号'  from score   group by students_no

sql查询语句之平均分、最高最低分及排序语句

查询考试两门以上课程的学生学号

select students_no as '学生编号',count(object_no) as '课程编号'  from score   group by students_no HAVING count( object_no)>2

sql查询语句之平均分、最高最低分及排序语句

查询同名学生名单并统计同名人数

select students_name as '学生名称',count(students_name) as '同名数量'  from students group by students_name HAVING count(students_name)>1

sql查询语句之平均分、最高最低分及排序语句

计算每门课程的平均成绩

select object_no as '课程编号',avg(score) as '平均成绩' from score group by object_no

sql查询语句之平均分、最高最低分及排序语句

计算每门课程的平均成绩并且平均成绩大于等于70分

select object_no as '课程编号',avg(score) as '平均成绩' from score group by object_no HAVING avg(score)>70

sql查询语句之平均分、最高最低分及排序语句

查询不及格的课程并按课程号从大到小排列

select object_no as '课程编号',students_no '学生编号',score '分数' from score where score<60 order by object_no desc

sql查询语句之平均分、最高最低分及排序语句

查询每门课程的平均成绩,结果按平均成绩降序排列,如果平均成绩相同时,按课程号升序排列

select object_no as '课程编号',avg(score) as '平均成绩' from score group by object_no order by avg(score) desc,object_no asc

sql查询语句之平均分、最高最低分及排序语句

总结

到此这篇关于sql查询语句之平均分、最高最低分及排序语句的文章就介绍到这了!

MySQL 相关文章推荐
MySQL的join buffer原理
Apr 29 MySQL
分析MySQL抛出异常的几种常见解决方式
May 18 MySQL
MySQL 全文索引使用指南
May 25 MySQL
MySQL中日期型单行函数代码详解
Jun 21 MySQL
MySQL令人大跌眼镜的隐式转换
Aug 23 MySQL
Mysql数据库中datetime、bigint、timestamp来表示时间选择,谁来存储时间效率最高
Aug 23 MySQL
面试被问select......for update会锁表还是锁行
Nov 11 MySQL
彻底解决MySQL使用中文乱码的方法
Jan 22 MySQL
分享MySQL常用 内核 Debug 几种常见方法
Mar 17 MySQL
mysql使用 not int 子查询隐含陷阱
Apr 12 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
Jun 28 MySQL
jdbc中自带MySQL 连接池实践示例
Jul 23 MySQL
mysql5.5中文乱码问题解决的有用方法
深入理解MySQL中MVCC与BufferPool缓存机制
MYSQL事务的隔离级别与MVCC
详解Mysql数据库平滑扩容解决高并发和大数据量问题
MySQL中EXPLAIN语句及用法
May 20 #MySQL
Mysql 一主多从的部署
May 20 #MySQL
mysql 排序失效
May 20 #MySQL
You might like
《PHP编程最快明白》第五讲:php目录、文件操作
2010/11/01 PHP
php函数之子字符串替换&amp;#65279; str_replace
2011/03/23 PHP
解决File size limit exceeded 错误的方法
2013/06/14 PHP
php微信公众平台开发之获取用户基本信息
2015/08/17 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
php输出含有“#”字符串的方法
2017/01/18 PHP
PHP实现带进度条的Ajax文件上传功能示例
2019/07/02 PHP
解决php扩展安装不生效问题
2019/10/25 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
JS动态修改iframe高度和宽度的方法
2015/04/01 Javascript
JQuery中DOM事件绑定用法详解
2015/06/13 Javascript
浅析AngularJS中的生命周期和延迟处理
2015/06/18 Javascript
jQuery ajax分页插件实例代码
2016/01/27 Javascript
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
2016/05/04 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
javascript实现二叉树遍历的代码
2017/06/08 Javascript
关于vue面试题汇总
2018/03/20 Javascript
详解Python的Twisted框架中reactor事件管理器的用法
2016/05/25 Python
Python卸载模块的方法汇总
2016/06/07 Python
Django实现列表页商品数据返回教程
2020/04/03 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
Python 如何批量更新已安装的库
2020/05/26 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
Html5 webview元素定位工具的实现
2020/08/07 HTML / CSS
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
请用用Java代码写一个堆栈
2012/01/26 面试题
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
职场新人刚入职工作总结该怎么写?
2019/05/15 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
vue实现水波涟漪效果的点击反馈指令
2021/05/31 Vue.js