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 binlog
Jun 11 MySQL
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
Jun 26 MySQL
MySql 缓存查询原理与缓存监控和索引监控介绍
Jul 02 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
mysql sum(if())和count(if())的用法说明
Jan 18 MySQL
Mysql忘记密码解决方法
Feb 12 MySQL
MySQL高级进阶sql语句总结大全
Mar 16 MySQL
MySQL优化常用的19种有效方法(推荐!)
Mar 17 MySQL
mysql中DCL常用的用户和权限控制
Mar 31 MySQL
mysql使用instr达到in(字符串)的效果
Apr 03 MySQL
mysql的单列多值存储实例详解
Apr 05 MySQL
MySQL事务操作的四大特性以及并发事务问题
Apr 12 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空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
有关PHP 中 config.m4 的探索
2020/08/26 PHP
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
js 使用form表单select类实现级联菜单效果
2012/12/19 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
js滑动提示效果代码分享
2016/03/10 Javascript
JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
2016/08/11 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
Jquery on绑定的事件 触发多次实例代码
2016/12/08 Javascript
原生JavaScript实现Ajax异步请求
2017/11/19 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
快速解决brew安装特定版本flow的问题
2018/05/17 Javascript
浅谈一个webpack构建速度优化误区
2019/06/24 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
[02:57]2014DOTA2国际邀请赛-观众采访
2014/07/19 DOTA
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
python 图片验证码代码
2008/12/07 Python
python 查找字符串是否存在实例详解
2017/01/20 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
Python-jenkins模块之folder相关操作介绍
2020/05/12 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
以色列的身体护理及家居香薰品牌:Sabon NYC
2018/02/23 全球购物
丝芙兰波兰:Sephora.pl
2018/03/25 全球购物
物业保安主管岗位职责
2013/12/25 职场文书
《雕塑之美》教学反思
2014/04/24 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
历史博物馆观后感
2015/06/05 职场文书
七年级之家长会发言稿范文
2019/09/04 职场文书
Java基础之线程锁相关知识总结
2021/06/30 Java/Android