sql-50练习题16-20

sql-50练习题16-20

  • 前言
  • 数据库表结构介绍
    • 学生表
    • 课程表
    • 成绩表
    • 教师表
  • 1-6 检索"01"课程分数小于60,按分数降序排列的学生信息
  • 1-7 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
  • 1-8 查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
  • 1-9 查询学生的总成绩并进行排名
  • 2-0 查询学生的总成绩并进行排名

前言

sql真的非常灵活,一个题目可能有很多很多种解法,我记录的只是我自己的一个解题思路,如果大家有更好的不同解法欢迎在评论区一起探讨
ps:有些题可能解法会重复,比如求大于,我们下一个题可能是求小于,大家如果第一遍没有做出来,看了我写的之后有了思路,可以试一下反面的解法。

数据库表结构介绍

学生表

在这里插入图片描述

课程表

在这里插入图片描述

成绩表

在这里插入图片描述

教师表

在这里插入图片描述

1-6 检索"01"课程分数小于60,按分数降序排列的学生信息

SELECTa.*, b.c_id,b.s_score
FROMstudent a,score b
WHEREa.s_id = b.s_id
AND b.c_id = '01'
AND b.s_score < 60
ORDER BYb.s_score DESC;

结果如下:
在这里插入图片描述

1-7 按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩

SELECTa.s_id,(SELECTs_scoreFROMscoreWHEREs_id = a.s_idAND c_id = '01') AS 语文,(SELECTs_scoreFROMscoreWHEREs_id = a.s_idAND c_id = '02') AS 数学,(SELECTs_scoreFROMscoreWHEREs_id = a.s_idAND c_id = '03') AS 英语,round(avg(s_score), 2) AS 平均分
FROMscore a
GROUP BYa.s_id
ORDER BY平均分 DESC;

结果如下:
在这里插入图片描述

1-8 查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率

– round 函数主要是进行数值的小数点保留
– 1、round(x,d) x指要处理的数,d是指保留几位小数。这里有个值得注意的地方是,d可以是负数,这时是指定小数点左边的d位整数位为0,同时小数位均为0;
– 2、round(x) ,其实就是round(x,0),也就是默认d为0;

SELECTa.c_id,b.c_name,MAX(s_score),MIN(s_score),AVG(s_score),ROUND(100 * (SUM(CASEWHEN a.s_score >= 60AND a.s_score <= 90 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 及格率,ROUND(100 * (SUM(CASEWHEN a.s_score >= 70AND a.s_score <= 80 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 中等率,ROUND(100 * (SUM(CASEWHEN a.s_score >= 80AND a.s_score <= 90 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 优良率,ROUND(100 * (SUM(CASEWHEN a.s_score >= 90 THEN1ELSE0END) / SUM(CASEWHEN a.s_score THEN1ELSE0END)),2) AS 优秀率
FROMscore a
LEFT JOIN course b ON a.c_id = b.c_id
GROUP BYa.c_id

结果如下:
在这里插入图片描述

1-9 查询学生的总成绩并进行排名

SELECT b.*, a.c_id, a.s_score, (SELECT COUNT(DISTINCT a2.s_score) FROM score a2 WHERE a2.c_id = a.c_id AND a2.s_score >= a.s_score) AS rk
FROM score a
JOIN student b ON a.s_id = b.s_id;

结果如下:
在这里插入图片描述

2-0 查询学生的总成绩并进行排名

SELECTsuma.*, (SELECTcount(avgscore)FROM(SELECTa.s_id,avg(a.s_score) avgscoreFROMscore aGROUP BYa.s_id) sumbWHEREsuma.avgscore < sumb.avgscore) + 1 rk
FROM(SELECTa.s_id,avg(a.s_score) avgscoreFROMscore aGROUP BYa.s_id) suma
ORDER BYrk ASC

结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/156261.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

软件测试简历项目经验怎么写,没有项目经验?

怎么办&#xff1f;只能接受低薪工作吗&#xff1f;No No No。本文就教大家如何解决这个问题。 为了帮助大家彻底解决“没有项目”这个拦路虎&#xff0c;接下来文章将从以下几个方面进行展开&#xff1a; 1、应该去哪找项目&#xff1f; 2、在众多的项目中&#xff0c;该怎么…

RPC与HTTP的关系

首选理清楚关系 RPC与HTTP是两个不同维度的东西 HTTP 协议&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff0c;又叫做超文本传输协议&#xff0c;是一种传输协议&#xff0c;平时通过浏览器浏览网页网页&#xff0c;用到的就是 HTTP 协议。 而 RPC&#xff0…

C# OpenCvSharp Yolov8 Face Landmarks 人脸特征检测

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_Yolov8_Demo {public partial class frmMain…

Navicat连接postgresql数据库 -->华为云服务器

Navicat连接postgresql数据库 -->华为云服务器 2.开放服务器端口&#xff1a;54323.Navicat连接postgresql数据库 2.开放服务器端口&#xff1a;5432 1-1.选择安全组 1-2. 添加规则 1-3.开放5432端口规则 1-4.查看规则 3.Navicat连接postgresql数据库

GB28181协议怎样执行保活命令

前言 GB28181协议是视频监控领域的国家标准&#xff0c;本文将解析如何在FFmpeg中增加对GB28181协议的支持&#xff0c;使其可以与支持GB28181协议的设备进行通信与控制&#xff0c;实现设备的注册、保活以及流媒体的传输。 背景介绍 GB28181协议指的是国家标准GB/T 28181—…

功能测试用例,需要详细到什么程度?

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;欢迎加入我们一起学习&#xff01;&#x1f4e2;资源分享&#xff1a;耗时200小时精选的「软件测试」资…

从零开始的目标检测和关键点检测(二):训练一个Glue的RTMDet模型

从零开始的目标检测和关键点检测&#xff08;二&#xff09;&#xff1a;训练一个Glue的RTMDet模型 一、config文件解读二、开始训练三、数据集分析四、ncnn部署 从零开始的目标检测和关键点检测&#xff08;一&#xff09;&#xff1a;用labelme标注数据集 从零开始的目标检测…

我的风信共享

登录界面&#xff1a; 管理员可以对所有文章包括管理员发布的文章进行管理&#xff1a; 普通用户只能对自己的文章进行操作; 分类展示&#xff1a; 文章发布功能&#xff1a; 搜索功能&#xff1a;

Redis 原理缓存过期、一致性hash、雪崩、穿透、并发、布隆、缓存更新策略、缓存数据库一致性

redis过期策略 redis的过期策略可以通过配置文件进行配置 一、定期删除 redis会把设置了过期时间的key放在单独的字典中&#xff0c;定时遍历来删除到期的key。 1&#xff09;.每100ms从过期字典中 随机挑选20个&#xff0c;把其中过期的key删除&#xff1b; 2&#xff09;.…

进程的创建代码

我自己手敲出来的&#xff0c;敲了好久。 p1的代码&#xff1a; #include<stdio.h> #include<unistd.h> #include<sys/types.h> #include<errno.h> #include<sys/wait.h> #include<stdlib.h> int main(){pid_t childpid;int retval;int…

`.NET Web`新人入门必学项目`EarthChat`

.NET Web新人入门必学项目EarthChat EarthChat是一个基于.NET 7的实战项目&#xff0c;EarthChat提供了很多的最佳实践&#xff0c;EarthChat的目标也是成为一个很多人都喜欢的大型聊天业务系统&#xff0c;并且将结合SKAI大模型进行打造智能业务系统&#xff0c;在EarthChat中…

2023年Q3户外装备市场行业分析报告(京东数据分析):同比增长7%,品牌化发展是核心

近年来&#xff0c;户外运动在我国不少地方蓬勃兴起&#xff0c;发展至今&#xff0c;户外运动早已不是聚焦专业领域的小众群体活动&#xff0c;现已发展成为当下热门的大众休闲活动&#xff0c;参与人群愈发广泛&#xff0c;而这股热潮也带动着相关产业的发展。 今年Q3&#x…