HQL,SQL刷题,尚硅谷

目录

相关表数据:

题目及思路解析:

 查询结果排序&分组指定条件

1、查询学生的总成绩并按照总成绩降序排序

2、按照如下格式显示学生的语文、数学、英语三科成绩,没有成绩的输出为0,按照学生的有效平均成绩降序显示 

3、查询一共参加三门课程且其中一门为语文课程的学生的id和姓名

总结归纳:

知识补充:


相关表数据:

1、student_info

2、course_info

3、score_info

题目及思路解析:

 查询结果排序&分组指定条件

1、查询学生的总成绩并按照总成绩降序排序

代码:

selectstu_id,sum(score) total_score
from score_info
group by stu_id
order by total_score desc ;

思路分析:

首先进行分组,获取到每位学生的所有(参加考试的)课程的成绩,接着使用sum()函数求和,按照题目要求进行输出。

注:这里使用sum(),不可以用count(),因为count()求的是表的行数

结果:

2、按照如下格式显示学生的语文、数学、英语三科成绩,没有成绩的输出为0,按照学生的有效平均成绩降序显示 

输出显示 :学生id  语文    数学    英语   有效课程数      平均成绩

这里结果需要输出有效课程, 参加考试(在表中有成绩)的课程数

代码:

方法1:

Tips: 使用sum(if())函数判断

  selectstu_id,sum(if(course_name='语文',score,0))  `语文`,sum(if(course_name='数学',score,0))  `数学`,sum(if(course_name='英语',score,0)) `英语`,count(*) `有效课程`,avg(score) `平均成绩`from score_infojoin course_infoon score_info.course_id=course_info.course_idgroup by stu_idorder by avg(score) desc;

思路:

首先在score_info表中进行按照stu_id分组,得到每位学生的所有(参加考试的)课程的成绩,接着join连接course_info表得到语文、数学、英语对应的course_id, 然后使用sum(if())输出三个课程的成绩,最后按照题目要求输出内容

注:

`count(*)即score_info表中的行数(即每个人有成绩的课程数)

`avg(score)即所有参考课程成绩的平均值 

`sum(if(a,b,c))即如果满足a条件则输出b(若b非空),否则输出c

方法2:

Tips: 使用nvl()函数判断

selectt4.stu_id,nvl(t1.score,0) `语文`,nvl(t2.score,0) `数学`,nvl(t3.score,0) `英语`
from
(selectstu_id,score
from score_info
where course_id='01'
)t1
full join(selectstu_id,score
from score_info
where course_id='02'
)t2
on t1.stu_id=t2.stu_id
full join
(selectstu_id,score
from score_info
where course_id='03'
)t3
on nvl(t1.stu_id,t2.stu_id)=t3.stu_id
full join
(selectstu_id,count(*) cnt,avg(score) avg_score
from score_info
group by stu_id
)t4
on coalesce(t1.stu_id,t2.stu_id,t3.stu_id)=t4.stu_id;

思路:

首先获取有语文,有数学,有英语成绩的学生,以及统计课程数查询,平均成绩查询,

接着通过stu_id进行满外连接,最后进行嵌套输出题目要求的内容

注:使用满外连接的原因

 因为题目要求输出三科的成绩,但可能存在只有其中某一科或两科成绩的学生,这样才能在最后按照要求输出三科成绩 

结果:

3、查询一共参加三门课程且其中一门为语文课程的学生的id和姓名

代码:

selectt2.stu_id id,stu_name `姓名`
from
(selectt1.stu_idfrom( selectstu_id,course_idfrom score_infowhere stu_idin (selectstu_idfrom score_infojoin course_infoon score_info.course_id=course_info.course_idwhere course_name='语文'))t1group by t1.stu_idhaving count(t1.course_id)=3
)t2
join student_info
on t2.stu_id=student_info.stu_id;

思路:

本题主要是嵌套查询,首先查询在score_info表中有语文成绩的(即course_id为语文的course_id(需join连接course_info表获取))学生,接着在上面基础上,查询有成绩的课程数为3的学生,最后join连接student_info表输出学生id与name

结果:

总结归纳:

以上题主要考察了聚合函数使用,嵌套子查询,分组聚合,结果排序,join连接的使用等 

知识补充:

1、在dataGrip中使用中文别名需要键盘左上角的反单引号(即波浪线下面的小点)

2、sum(if(a,b,c))即如果满足a条件则输出b(若b非空),否则输出c

3、

 nvl(a,b),若a为空则判断b,   nvl()与mysql中的 if not逻辑类似,可嵌套,有两个参数

coalesce(a,b,c...)相当于增强版的nvl函数,与nvl不同的是,coalesce可有多个参数

   

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

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

相关文章

hosts.allow限制可通过SSH登录到服务器的IP

hosts.allow限制可通过SSH登录到服务器的IP 网络防火墙是阻挡非授权主机访问网络的第一道防护,但是它们不应该仅有一道屏障。Linux使用了两个文件!。/etc/hosts.allow和/etc/hosts.deny,根据网络请求的来源限制对服务的访问。 hosts.allow文件列出了允…

常用SQL查询方法与实例

目录 SELECT查询 INSERT查询 UPDATE查询 DELETE查询 JOIN查询 GROUP BY查询 HAVING查询 窗口函数 公共表表达式(CTEs) 递归查询 透视表 分析函数 解透视 条件聚合 日期函数 合并语句 情况语句 常用SQL查询方法有以下几种: S…

【无监督学习之聚类】

曾梦想执剑走天涯,我是程序猿【AK】 目录 简述概要知识图谱1. K-Means聚类2. 层次聚类(Hierarchical Clustering)3. DBSCAN(Density-Based Spatial Clustering of Applications with Noise)4. 谱聚类(Spect…

一个实时波形图的封装demo(QT)(qcustomplot)

前言: 封装的一个实时波形图的类,可以直接提升使用。 提供了接口,可以更改颜色,样式,等等 参考: Qt Plotting Widget QCustomPlot - Introduction 另外参考了一个大神的作品,链接没找到。 项目…

前端面试练习24.2.29

一.关于Vuex说法 Vuex可以用来管理数据 Vuex也可以实现组件间的传值 mutation中的方法按照规定最好不要涉及异步方法 Vuex的属性有 state 存储状态 mutations 同步函数 actions 异步函数,并且调用的事mutations getters 派生状态,类似与vue中的c…

嘎嘎快充云快充互联互通系统使用说明书

嘎嘎快充云快充互联互通系统 V1.0.0 使用手册 (V1.0) 二○二四年一月 目录 一、软件产品概述 2 二、系统要求及运行环境 2 1、 系统要求 2 2、 运行环境 3 三、软件操作和说明 3 1、 软件的安装 3 2、 软件启动 8 3、 软件工作界面 8 4、 软件功能介绍…

#13Maven打包生成MD5校验文件的两种方式

目录 1、checksum-maven-plugin 2、maven-antrun-plugin 1、checksum-maven-plugin <plugin><groupId>net.ju-n.maven.plugins</groupId><artifactId>checksum-maven-plugin</artifactId><version>1.2</version><executions&g…

线路覆冰加重导线舞动风险,输电线路导线舞动在线监测装置保障运行安全

2月21日&#xff0c;山东烟台迎来强降雪天气&#xff0c;国网烟台供电公司紧急部署&#xff0c;组织运维人员联合智能巡检设备对重要变电站和输电线路进行巡视&#xff0c;确保电网安全稳定运行。 “雨雪天气给输电线路造成一定的影响&#xff0c;尤其是雨雪加上冰冻&#xff0…

NIST正式发布网络安全框架 2.0最终版:相比之前两个版本的六大重大变化

2月26日美国国家标准与技术研究院 (NIST) 正式发布了更新后的网络安全框架 (CSF)&#xff0c;这是其降低网络安全风险的里程碑式指导文件。新的 2.0 版本专为所有行业部门和组织类型而设计&#xff0c;从最小的学校和非营利组织到最大的机构和公司&#xff0c;无论其网络安全的…

Nodejs+vue汽车保养美容管理系统vscode前后端分离项目

汽车美容保养管理系统后台采用nodejs语言开发,前台页面和后台管理页面使用vue等技术开发,使用MySql作为数据持久化存储工具对汽车美容保养管理系统的用户等角色权限对应的功能等进行存储。采用vsocde集成IDE对汽车美容保养管理系统统进行开发,整合系统的各个模块。 拟开发的汽车…

Kivy和BeeWare 开发APP的优缺点,及其发展历史

Kivy和BeeWare都是流行的Python框架&#xff0c;用于开发移动应用。它们各自有独特的特点和优势&#xff0c;同时也面临一些挑战和限制。下面是对这两个框架的开发优缺点及其发展历史的总结。 Kivy 发展历史 起源&#xff1a;Kivy诞生于2010年&#xff0c;旨在提供一个用于P…

[回归指标]R2、PCC(Pearson’s r )

R2相关系数 R2相关系数很熟悉了&#xff0c;就不具体解释了。 皮尔逊相关系数&#xff08;PCC&#xff09; 皮尔逊相关系数是研究变量之间线性相关程度的量&#xff0c;R方和PCC是不同的指标。R方衡量x和y的接近程度&#xff0c;PCC衡量的是x和y的变化趋势是否相同。R方是不…

Mac OS 制作可引导安装器并重新安装系统

Mac 使用 U盘或移动固态硬盘制作可引导的安装器&#xff08;以 Monterey 为例&#xff09; 本教程参考 Apple 官网相关教程 创建可引导 Mac OS 安装器 重新安装 Mac OS 相关名词解释 磁盘分区会将其划分为多个单独的部分&#xff0c;称为分区。分区也称为容器&#xff0c;不同…

以太坊学习工具推荐

以太坊学习工具推荐 主网浏览器Sepolia测试网浏览器ETH官方网站Raw Transaction Decode Toolweb3.pyweb3.jsSolidity 学习文档

Windows PowerShell 命令行历史记录补全

Windows 命令行历史记录补全 使用 powershell 安装PSReadLine 2.1.0 Install-Module PSReadLine -RequiredVersion 2.1.0检查是否存在配置文件 Test-path $profile # 为 false 则执行命令创建 New-item –type file –force $profile编辑配置文件 notepad $profile# 输入如下…

备战蓝桥杯---树形DP基础3

上一次我们讲了二叉苹果树&#xff0c;现在我们加一点难度&#xff0c;从二叉变成了多叉苹果树。 这样子我们就不可以直接按照上次的方法DP&#xff0c;我们其实可以发现&#xff0c;我们可以用类似背包的思想求解&#xff0c;这就是所谓的树上背包。 我们先加进第一个儿子来…

鸿蒙Harmony应用开发—ArkTS声明式开发(挂载卸载事件)

挂载卸载事件指组件从组件树上挂载、卸载时触发的事件。 说明&#xff1a; 从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 onAppear onAppear(event: () > void) 组件挂载显示时触发此回调。 卡片能力&#xff1a; …

如何入门深度学习

入门深度学习需要一步步学习基础知识&#xff0c;积累实践经验&#xff0c;并持续关注领域的最新进展。以下是详细的入门指南&#xff1a; 1. 掌握基本数学和编程知识&#xff1a; 线性代数&#xff1a;深度学习涉及大量矩阵运算&#xff0c;因此了解线性代数的基本概念和操作…

qt写代码判断一个数字是否可以被7整除

普通小程序cgtk可以跨平台&#xff0c;c跨平台用qt比较方便&#xff0c;deepinlinuxv20.9应用商店安装dtk-ide&#xff0c;就可以开发qt了&#xff0c;用上dtk模板就是dtk应用&#xff0c;qt模板就是qt跨平台应用 #include "mainwindow.h" #include "ui_mainwi…

MySQL DEFINER详解

在 MySQL 数据库中&#xff0c;在创建视图及函数的时候&#xff0c;通常会用到definer。并且在迁移视图或函数过程中&#xff0c;该选项经常会引起报错。本篇文章主要介绍下 MySQL 中 definer 的含义及作用。 1. DEFINER简单介绍 下述是创建视图的基础语法 CREATE[OR REPLAC…