当前位置: 首页 > news >正文

SQL,HQL刷题,尚硅谷

相关表数据:

1、score_info

2、student_info

题目及思路解析:

分组结果的条件

   1、查询平均成绩大于60分的学生的学号和平均成绩

代码:

selectstu_id,avg(score) score_avg
from score_info
group by stu_id
having score_avg>60;

思路解析:

首先通过学号进行分组,获取到每个学习的所有科目的成绩,接着求平均成绩(所有学科总成绩的平均成绩),最后对求得的平均成绩进行条件筛选,得到符合题目要求的学生信息

结果:

 

   2、查询至少选修四门课程的学生学号

代码:

selectstu_id
from score_info
group by stu_id
having count(course_id)>=4;

selectstu_id,count(course_id) course_count
from score_info
group by stu_id
having course_count >=4;

思路解析: 

首先对学号进行分组,获取到每个学生的参加考试学科的成绩信息,用count函数对学科号进行统计,并按照题目条件进行筛选,最终获取符合题意的学生成绩信息

结果:

   3、查询同姓(假设每个学生姓名的第一个字为姓)的学生名单并统计同姓人数大于2的姓

注:本题可以使用字符串函数substring()

代码:

selectt1.first_name,count(*) first_name_count
from
(selectstu_id,substring(stu_name,0,1) first_namefrom student_info
)t1
group by t1.first_name
having first_name_count >=2;

注:

1、第二层查询可以不用t1.first_name

2、count(*)即统计表中所有行数,包括null    (也可以使用count(列名),不包括null)

3、关于subtring补充请点击跳转--->  知识补充

思路解析:  

首先我们利用substring()函数获取到每个学生的姓氏,接着我们对获取的姓氏进行分组、并统计分组后的人数,最后按照题目要求进行筛选,获取到符合题意的学生信息

结果: 

   4、查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列

 代码:

selectcourse_id,avg(score) avg_score
from score_info
group by course_id
order by avg_score asc,course_id desc ;

注: 平均成绩升序按排序,后面加上按课程号降序排列,即平均成绩相同时自动按照第二种排序情况

思路解析: 

首先对课程号进行分组(获取到每个课程的学生成绩),对获取的课程成绩(总成绩)求平均值,最后对结果进行排序,平均成绩按升序,平均成绩相同时,按课程号降序排列 。

结果:

   5、统计参加考试人数大于等于15的学科

 代码:

selectcourse_id,count(*) number_test
from score_info
group by course_id
having number_test>=15;

思路解析: 

首先按照课程号进行分组,接着统计每个课程的参加考试人数,然后添加条件进行进一步筛选,最终获取到符合题意的数据。

结果:

总结归纳: 

考察了聚合函数与分组聚合的综合运用,使用了字符串函数,查询简单嵌套等

知识补充:

substring:截取字符串

    语法一:substring(string A, int start)

    返回值:string

    说明:返回字符串A   从start位置到结尾的字符串

    语法二:substring(string A, int start, int len)

    返回值:string

    说明:返回字符串A从start位置开始,长度为len的字符串

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【MySQL】字符串函数的学习
  • 使用代理IP有风险吗?如何安全使用代理IP?
  • STM32 硬件随机数发生器(RNG)
  • GNU C和标准C
  • Redis(十三)缓存双写一致性策略
  • 在Ubuntu22.04上部署ComfyUI
  • 【51单片机】外部中断和定时器中断
  • 【数据结构】链表OJ面试题5(题库+解析)
  • Java异常处理 throw和throws
  • 黄金交易策略(Nerve Knife):反趋势锁定单的处理机制
  • RISC-V指令格式
  • 2024.2.5 vscode连不上虚拟机,始终waiting for server log
  • 极值图论基础
  • C#的Char 结构的像IsLetterOrDigit(Char)等常见的方法
  • 【OpenVINO™】在 MacOS 上使用 OpenVINO™ C# API 部署 Yolov5 (下篇)
  • 【刷算法】从上往下打印二叉树
  • bearychat的java client
  • CentOS7 安装JDK
  • CentOS从零开始部署Nodejs项目
  • css布局,左右固定中间自适应实现
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • Intervention/image 图片处理扩展包的安装和使用
  • JS 面试题总结
  • k8s如何管理Pod
  • Laravel核心解读--Facades
  • linux安装openssl、swoole等扩展的具体步骤
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • nfs客户端进程变D,延伸linux的lock
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring Boot快速入门(一):Hello Spring Boot
  • SpringCloud集成分布式事务LCN (一)
  • Terraform入门 - 1. 安装Terraform
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • yii2权限控制rbac之rule详细讲解
  • 观察者模式实现非直接耦合
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • #define MODIFY_REG(REG, CLEARMASK, SETMASK)
  • $jQuery 重写Alert样式方法
  • (07)Hive——窗口函数详解
  • (BAT向)Java岗常问高频面试汇总:MyBatis 微服务 Spring 分布式 MySQL等(1)
  • (Charles)如何抓取手机http的报文
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (void) (_x == _y)的作用
  • (八)c52学习之旅-中断实验
  • (二)hibernate配置管理
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (接口自动化)Python3操作MySQL数据库
  • (三)SvelteKit教程:layout 文件
  • (一)u-boot-nand.bin的下载
  • (转)c++ std::pair 与 std::make
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)EOS中账户、钱包和密钥的关系