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 相关文章推荐
数据库连接池
Apr 06 MySQL
MySQL之高可用集群部署及故障切换实现
Apr 22 MySQL
MySQL大小写敏感的注意事项
May 24 MySQL
python中的mysql数据库LIKE操作符详解
Jul 01 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
MySQL 四种连接和多表查询详解
Jul 16 MySQL
SQL实现LeetCode(175.联合两表)
Aug 04 MySQL
MySQL表类型 存储引擎 的选择
Nov 11 MySQL
关于mysql中时间日期类型和字符串类型的选择
Nov 27 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
Feb 15 MySQL
简单聊一聊SQL注入及防止SQL注入
Mar 23 MySQL
mysql序号rownum行号实现方式
Dec 24 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
不用数据库的多用户文件自由上传投票系统(1)
2006/10/09 PHP
Yii学习总结之数据访问对象 (DAO)
2015/02/22 PHP
php获取远程文件内容的函数
2015/11/02 PHP
javascript英文日期(有时间)选择器
2007/05/02 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
一个js导致的jquery失效问题的解决方法
2013/11/27 Javascript
JavaScript中对象属性的添加和删除示例
2014/05/12 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
2016/11/07 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
纯JS实现表单验证实例
2016/12/24 Javascript
jQuery操作之效果详解
2017/05/19 jQuery
angular之ng-template模板加载
2017/11/09 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
JS中的事件委托实例浅析
2018/03/22 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
2020/11/06 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
Python算法之栈(stack)的实现
2014/08/18 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
详解有关PyCharm安装库失败的问题的解决方法
2020/02/02 Python
Python基于template实现字符串替换
2020/11/27 Python
惠普香港官方商店:HP香港
2019/04/30 全球购物
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
2014/01/07 面试题
远东集团网络工程师面试题
2014/10/20 面试题
介绍一下Mysql的存储引擎
2015/02/12 面试题
学习委员自我鉴定
2014/01/13 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
法制宣传标语集锦
2014/06/25 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
2015年班组建设工作总结
2015/05/13 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
闭幕词的写作格式与范文!
2019/06/24 职场文书
总结Java对象被序列化的两种方法
2021/06/30 Java/Android