每年每门学科排名第一的学生 和每年总成绩都有所提升的学生

news2024/10/10 15:44:25

一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题:

问题1:每年每门学科排名第一的学生

问题2:每年总成绩都有所提升的学生


CREATE TABLE t1_student_scores
(
year varchar(15),
subject varchar(15),
student varchar(15),
score INT );
-- 数据插入语句
INSERT INTO t1_student_scores
(year, subject, student, score) VALUES
(2018, '语文', 'A', 84),
(2018, '数学', 'A', 59),
(2018, '英语', 'A', 30),
(2018, '语文', 'B', 44),
(2018, '数学', 'B', 76),
(2018, '英语', 'B', 68),
(2019, '语文', 'A', 51),
(2019, '数学', 'A', 94),
(2019, '英语', 'A', 71),
(2019, '语文', 'B', 87),
(2019, '数学', 'B', 44),
(2019, '英语', 'B', 38),
(2020, '语文', 'A', 91),
(2020, '数学', 'A', 50),
(2020, '英语', 'A', 89),
(2020, '语文', 'B', 81),
(2020, '数学', 'B', 84),
(2020, '英语', 'B', 98);

问题1:

FIRST_VALUE 是MySQL中的一个窗口函数,它返回与当前行相关的窗口框架的第一行的值

使用窗口函数:

select distinct year ,subject,first_student from(
select year,subject,student,score,
first_value(student) over (partition by year,subject order by score desc) as first_student
from t1_student_scores) temp;

使用连接查询:

select temp.year,temp.subject,student
from t1_student_scores ,
(select year,subject,Max(score) score
from t1_student_scores
group by year,subject) temp
where temp.year=t1_student_scores.year and temp.subject=t1_student_scores.subject and temp.score=t1_student_scores.score
order by year,subject

问题2:每年总成绩都有所提升的学生

1.计算每年每个学生的总成绩
select year, student, sum(score) as total_score
from t1_student_scores
group by year, student

 

2.使用lag函数,在本行添加上一学年成绩

LAG 是MySQL中的一个窗口函数,它允许你访问结果集中当前行之前的行中的数据

LAG函数通常有三个参数:列名、偏移量和默认值。

偏移量表示我们想要向上查看多少行,默认值为1

默认值则是当没有足够的行可供偏移时返回的值。如果不指定默认值,当偏移量超出范围时,LAG函数将返回NULL。

select year,
       student,
       total_score,
       lag(total_score) over (partition by student order by year) as last_year_score
from (select year, student, sum(score) as total_score
      from t1_student_scores
      group by year, student) t

3.剔除lag()结果字段为空数据,然后比较判断是否有进步
select year,
       student,
       total_score,
       last_year_score,
       if(total_score > last_year_score, 1, 0) as improve_flag
from (select year,
             student,
             total_score,
             lag(total_score) over (partition by student order by year) as last_year_score
      from (select year, student, sum(score) as total_score
            from t1_student_scores
            group by year, student) t) t1
where last_year_score is not null

4.取每年进步

根据student分租,如果行数=sum(improve_flag)表示每年都进步

UNT函数可以接受一个参数,这个参数可以是*(表示计数所有行,包括NULL值所在的行),或者是某个列的名称(表示只计数那些列值不为NULL的行)。

COUNT(1)会计算结果集中的非NULL值的数量,因为1永远不是NULL。这与COUNT(*)的行为类似,后者也是计数所有行,不管列值是否为NULL

select student
from(
select year,
       student,
       total_score,
       last_year_score,
       if(total_score > last_year_score, 1, 0) as improve_flag
from (select year,
             student,
             total_score,
             lag(total_score) over (partition by student order by year) as last_year_score
      from (select year, student, sum(score) as total_score
            from t1_student_scores
            group by year, student) t) t1
where last_year_score is not null) temp
group by student
having count(1)=sum(improve_flag)

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

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

相关文章

【STM32 HAL库】MPU6050 DMP库移植 与 自检失败的处理

【STM32 HAL库】MPU6050 DMP库移植 与 自检失败的处理 本文参考移植步骤文件配置代码修改inv_mpu.cinv_mpu.hinv_mpu_dmp_motion_driver.c 使用 自检失败怎么处理ret -1改正DEBUG过程 ret -9改正DEBUG过程 本文参考 B站 CSDN 移植步骤 文件配置 新建一个 dmp 文件夹 并将…

【斯坦福CS144】Lab1

一、实验目的 1.实现一个流重组器——一个将字节流的小块 (称为子串或段 )按正确顺序组装成连续的字节流的模块; 2.深入理解 TCP 协议的工作方式。 二、实验内容 编写一个名为"StreamReassembler"的数据结构,它负责…

【Nacos入门到实战十四】Nacos配置管理:集群部署与高可用策略

个人名片 🎓作者简介:java领域优质创作者 🌐个人主页:码农阿豪 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[2435024119qq.com] &#x1f4f1…

原神5.1前瞻网页HTML+CSS+JS

这篇文章主要是总结一下我在制作页面的时候用到的一些技术以及经验总结,博主也是第一次写网页,代码也是在不断地“进化”,哪里写的不好大家可以随意指出。 下面就是一些经验总结,如果想看具体效果我这里也不好展示,需要…

pytorch导入数据集

1、概念: Dataset:一种数据结构,存储数据及其标签 Dataloader:一种工具,可以将Dataset里的数据分批、打乱、批量加载并进行迭代等 (方便模型训练和验证) Dataset就像一个大书架,存…

QSerialPort 串口通信示例

之前使用过MFC写过串口通信的示例,今年学了Qt,特意使用Qt写了串口通信的示例,发现比MFC要容易一些, MFC串口示例如下: Qt示例如下: Qt这个做的很简单,主要还是想验证一下api, 核心…

今日指数day8实战补充(上)

1.用户管理 1.多条件综合查询 1.1 多条件综合查询接口说明 1)原型效果 2)接口说明 功能描述:多条件综合查询用户分页信息,条件包含:分页信息 用户创建日期范围 服务路径:/api/users 服务方法&#xff1…

Linux的Tomcat安装部署

1.下载jdk11 java11的官方URL 此时进入可能会有登录注册,挺简单的,注册登录就好 2.上传到Linux 3.解压 命令: tar -zxvf /root/linux.jdk/jdk-11.0.24_linux-x64_bin.tar.gz 4.移动解压文件夹到新建文件夹 新建文件夹: mkdir -p /export/server 移动命令: mv jdk-11.0…

联想服务器配置阵列、安装操作系统

文章目录 [toc]1.配置阵列2.制作启动盘3.安装系统 1.配置阵列 1.根据提示进入BIOS设置(F1) 2.系统设置 3.存储 4.第四步可以看到raid卡信息 5.Main Menu 6.Configuration Management 7.Create Virtual Drive 8.Select RAID Level raid5 9.Select Drives…

透明物体的投射和接收阴影

1、让透明度测试Shader投射阴影 (1)同样我们使用FallBack的形式投射阴影,但是需要注意的是,FallBack的内容为:Transparent / Cutout / VertexLit,该默认Shader中会把裁剪后的物体深度信息写入到 阴影映射纹…

降重秘籍:如何利用ChatGPT将重复率从45%降至10%以下?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 重复率高达45%?很多人一查论文的重复率,瞬间想“完了,这次真的要重写了”。但其实不用这么绝望!有了ChatGPT,降重真的没那么难。今天就教你几招&a…

VGG16模型实现MNIST图像分类

MNIST图像数据集 MNIST(Modified National Institute of Standards and Technology)是一个经典的机器学习数据集,常用于训练和测试图像处理和机器学习算法,特别是在数字识别领域。该数据集包含了大约 7 万张手写数字图片&#xf…

wsl环境下安装MySQL5.7

安装操作需root权限: 1-通过 sudo su - ,切换到root用户。 2-在每一个命令前加上sudo,临时提升权限 1、下载apt仓库文件 wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb 安装包是.deb的文件2、配置仓库,使…

MyBatis 批量插入方案

MyBatis 批量插入 MyBatis 插入数据的方法有几种: for 循环,每次都重新连接一次数据库,每次只插入一条数据。 在编写 sql 时用 for each 标签,建立一次数据库连接。 使用 MyBatis 的 batchInsert 方法。 下面是方法 1 和 2 的…

Linux防火墙-案例(一)filter表

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们经过上小章节讲了Linux的部分进阶命令,我们接下来一章节来讲讲Linux防火墙。由于目前以云服务器为主&#x…

51单片机的水位检测系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块水位传感器继电器LED、按键和蜂鸣器等模块构成。适用于水位监测、水位控制、水位检测相似项目。 可实现功能: 1、LCD1602实时显示水位高度 2、水位传感器采集水位高度 3、按键可设置水位的下限 4、按键可手动加…

动手学大模型应用开发之大模型简介

动手学大模型应用开发之大模型简介 主要学习目标什么是大语言模型大模型的能力和特点涌现能力作为基座模型支持多元应用的能力支持对话作为统一入口的能力大模型特点 常见大模型ChatGpt通义千问 LangChainLangChain的核心模块 总结相关学习链接 主要学习目标 学习如何进行大模…

【AI知识点】激活函数(Activation Function)

激活函数(Activation Function) 是神经网络中的一个关键组件,负责将输入的线性组合转化为非线性输出。它赋予神经网络模型以复杂的表达能力,使其能够处理非线性问题,比如分类、图像识别和自然语言处理等任务。 1. 激活…

【redis-06】redis的stream流实现消息中间件

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325【二】redis的持久化机制和原理https://zhenghuisheng.blog.csdn.net/article/details/142441756【三】redis缓存穿透、缓存击穿、缓存雪崩htt…

Spring Boot:医院管理的数字化转型

5系统详细实现 5.1 医生模块的实现 5.1.1 病床信息管理 医院管理系统的医生可以管理病床信息,可以对病床信息添加修改删除操作。具体界面的展示如图5.1所示。 图5.1 病床信息管理界面 5.1.2 药房信息管理 医生可以对药房信息进行添加,修改,…