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,一经查实,立即删除!

相关文章

常用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 另外参考了一个大神的作品,链接没找到。 项目…

#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对汽车美容保养管理系统统进行开发,整合系统的各个模块。 拟开发的汽车…

[回归指标]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;不同…

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; …

go语言魔法技能go:linkname

我们在看Go语言的源码时&#xff0c;经常会看到一些特别的注释&#xff0c;比如&#xff1a; //go:build //go:linkname //go:nosplit //go:noescape //go:uintptrescapes //go:noinline //go:nowritebarrierrec等等&#xff0c;这些特别的注释其实是Go编译器的指示指令。这里…

VUE实现Office文档在线编辑,支持doc/docx、xls/xlsx、ppt/pptx、pdf等

1.微软提供的在线Office预览&#xff08;只能预览&#xff0c;不能编辑&#xff09; https://view.officeapps.live.com/op/view.aspx?src服务器上文档地址&#xff08;http开头&#xff09; 2.国内在线Office方案&#xff1a; 腾讯文档、石墨文档、飞书 优势&#xff1a;跨…

Linux红帽rhce认证多少钱?考个RHCE难不难?

Linux作为开源操作系统的佼佼者&#xff0c;已经广泛应用于各个领域。红帽认证工程师(Red Hat Certified Engineer&#xff0c;简称RHCE)作为Linux领域权威的认证之一&#xff0c;自然成为了众多IT从业者追求的目标。那么&#xff0c;RHCE认证的培训费用是多少?考取这一认证又…

Linux的条件变量

条件变量 条件变量本身不是锁&#xff0c;但是它可以造成线程阻塞。通常于互斥锁配合使用。给多线程提供一个会和的场合。 使用互斥量保护共享数据使用条件变量可以造成线程阻塞&#xff0c;等待某个条件的发生&#xff0c;当条件满足的时候解除阻塞。 条件变量的两个动作&a…

python 基础知识点(蓝桥杯python科目个人复习计划55)

今日复习内容&#xff1a;做题 例题1&#xff1a;体育健将 问题描述&#xff1a; 小蓝作为班级里的体育健将&#xff0c;他被安排在校运会时参加n个体育项目&#xff0c;第i个体育项目参赛需要耗时ai分钟&#xff0c;赛后休息需要bi分钟&#xff08;这意味着当他参加完这场比…

【AIGC大模型】InstantID 赏析

论文地址&#xff1a;https://arxiv.org/abs/2401.07519 InstantID 主页&#xff1a;https://instantid.github.io/ Demo &#xff1a;https://huggingface.co/spaces/InstantX/InstantID code&#xff1a; InstantID/InstantID: InstantID : Zero-shot Identity-Preserving…

计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】

文章目录 前言第一章 计算机组成原理 概述及各种码1.1 计算机硬件的基本组成1.1.1 存储器1.1.2 运算器1.1.3 控制器 1.2 计算机的工作过程1.3 计算机的性能指标1.4 各个字长区别与联系 第二章 数据的表示与运算2.1 ASCII码2.2 各种码2.3 浮点数 总结 前言 给大家整理了一下计算…

雅特力AT32L021首款低功耗MCU震撼登场

雅特力于2月28日正式发布AT32L021首款入门级低功耗MCU&#xff0c;搭配不同容量Flash、SRAM&#xff0c;提供7种封装类型共21个型号选择&#xff0c;最小封装面积仅3x3mm。为降低能耗&#xff0c;延长设备运作时间&#xff0c;AT32L021系列支持多种能耗模式和休眠模式&#xff…