HiveSQL——不及格课程数大于2的学生的平均成绩及其排名

注:参考文章:

SQL 不及格课程数大于2的学生的平均成绩及其排名-HQL面试题47【拼多多】_sql 不及格人数超过两人-CSDN博客文章浏览阅读976次。0 问题描述create table scores( sid int, score int, cid int);insert into scores values(1, 90, 1),(1, 59, 2),(1, 67, 3),(2, 20, 1),(2, 30, 2),(2, 40, 3),(3, 14, 1),(3, 13, 2),(3, 15, 3),(4, 90, 1),(4, 90, 2),(4, 87, 3);1 数据分析..._sql 不及格人数超过两人https://blog.csdn.net/godlovedaniel/article/details/119858725

0 问题描述

   求不及格课程数大于2的学生的平均成绩及其成绩平均值后所在的排名。(成绩小于60分的判定为不及格)

1 数据准备

create table scores
(
  sid int,
  score int,
  cid int
)row format delimited
fields terminated by '\t';

insert into scores values
(1, 90, 1),
(1, 59, 2),
(1, 67, 3),
(2, 20, 1),
(2, 30, 2),
(2, 40, 3),
(3, 14, 1),
(3, 13, 2),
(3, 15, 3),
(4, 90, 1),
(4, 90, 2),
(4, 87, 3);

2 数据分析

完整的代码如下:

select
    t3.sid,
    t3.avg_score,
    t3.dr
from (select distinct
          sid,
          avg_score,
          dense_rank() over (order by avg_score desc) dr
      from (select
                sid,
                score,
                avg(score) over (partition by sid) as avg_score
            from scores) t2) t3
 join (select
              sid
        from scores
        group by sid
        having sum(if(score < 60, 1, 0)) >= 2) t1
  on t3.sid = t1.sid;

代码解析:

step1 :数据打标,成绩小于60的标1; 筛选出不及格课程数大于2的学生信息

select
    sid
from (select *,
             if(score < 60, 1, 0) as flag
      from scores) t1
group by sid
having sum(flag) >= 2

简化版本为:

select sid
from scores
 group by sid
 having sum(if(score <60,1,0)) >=2;

step2 :求学生平均成绩及其排名

select distinct
          sid,
          avg_score,
          dense_rank() over (order by avg_score desc) dr
from (select
            sid,
            score,
            avg(score) over (partition by sid) as avg_score
      from scores) t2;

ps: 这里针对avg_score 平均值排名,因为同一个sid, avg_score有重复值,所以排名需要只能用dense_rank,最后再用distinct 进行去重

step3: 基于step2的结果,与step1的结果进行关联,过滤出最终的结果。最终SQL如下:

select
    t3.sid,
    t3.avg_score,
    t3.dr
from (select distinct
          sid,
          avg_score,
          dense_rank() over (order by avg_score desc) dr
      from (select
                sid,
                score,
                avg(score) over (partition by sid) as avg_score
            from scores) t2) t3
 join (select
              sid
        from scores
        group by sid
        having sum(if(score < 60, 1, 0)) >= 2) t1
  on t3.sid = t1.sid;

3 小结

   本案例主要涉及到开窗函数及多表关联的使用。需要注意hive中不支持in查询,因此借助join等关联手段代替。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visio2013 下载安装教程,保姆级教程,附安装包和工具

前言 Visio是负责绘制流程图和示意图的软件&#xff0c;便于IT和商务人员就复杂信息、系统和流程进行可视化处理、分析和交流&#xff0c;可以促进对系统和流程的了解&#xff0c;深入了解复杂信息并利用这些知识做出更好的业务决策。帮助您创建具有专业外观的图表&#xff0c…

通过Demo学WPF—数据绑定(二)

准备 今天学习的Demo是Data Binding中的Linq&#xff1a; 创建一个空白解决方案&#xff0c;然后添加现有项目&#xff0c;选择Linq&#xff0c;解决方案如下所示&#xff1a; 查看这个Demo的效果&#xff1a; 开始学习这个Demo xaml部分 查看MainWindow.xaml&#xff1a; …

新型Black Matter勒索病毒,勒索300万美金

前言 BlackMatter勒索病毒是一款基于RAAS模式的新型勒索病毒&#xff0c;该勒索病毒组织成立于2021年7月&#xff0c;该勒索病毒黑客组织对外宣称&#xff0c;已经整合了DarkSide、REvil和LockBit等勒索病毒的最佳功能特点。 勒索病毒黑客组织曾表示不会对医疗保健、关键基础设…

【记录】记一次关于前端单元测试的全英文问卷调查( Survey: Automatically Generated Test Suites for JavaScript)

文章目录 OPENING STATEMENTBackgroundTask background: Fix the failing test casesBefore the task: Task: Fix the failing test casesTask: Executable DocumentationBefore the task: Bonus Opportunity: One more taskTask: Test Cases ClusteringRewardThank You! 原地址…

使用深度学习对视频进行分类

目录 加载预训练卷积网络 加载数据 将帧转换为特征向量 准备训练数据 创建 LSTM 网络 指定训练选项 训练 LSTM 网络 组合视频分类网络 使用新数据进行分类 辅助函数 此示例说明如何通过将预训练图像分类模型和 LSTM 网络相结合来创建视频分类网络。 要为视频…

TS学习与实践

文章目录 学习资料TypeScript 介绍TypeScript 是什么&#xff1f;TypeScript 增加了什么&#xff1f;TypeScript 开发环境搭建 基本类型编译选项类声明属性属性修饰符getter 与 setter方法static 静态方法实例方法 构造函数继承 与 super抽象类接口interface 定义接口implement…

[office] 教你如何用Excel制作施工管理日记 #其他#媒体

教你如何用Excel制作施工管理日记 对于在工地实习或者其他施工人员来说&#xff0c;常常会需要记录施工管理日记&#xff0c;其他软件的用法可以过于复杂&#xff0c;下面小编就来教你如何用Excel制作施工管理日记 对于在工地实习或者其他施工人员来说&#xff0c;常常会需要记…

软件文档测试

1 文档测试的范围 软件产品由可运行的程序、数据和文档组成。文档是软件的一个重要组成部分。 在软件的整人生命周期中&#xff0c;会用到许多文档&#xff0c;在各个阶段中以文档作为前阶段工作成果的体现和后阶段工作的依据。 软件文档的分类结构图如下图所示&#xff1a; …

【并发编程】享元模式

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 享元模式 简介 定义 英文名称&#xff1a;Flyweight pattern. 当需要重用数量有限的同一类对象时 享元模式是一种结构型的设计模式。它的主要目…

吉他学习:右手拨弦方法,右手拨弦训练 左手按弦方法

第六课 右手拨弦方法https://m.lizhiweike.com/lecture2/29362775 第七课 右手拨弦训练https://m.lizhiweike.com/lecture2/29362708

【Redis】深入理解 Redis 常用数据类型源码及底层实现(3.详解String数据结构)

【Redis】深入理解 Redis 常用数据类型源码及底层实现&#xff08;1.结构与源码概述&#xff09;-CSDN博客 【Redis】深入理解 Redis 常用数据类型源码及底层实现(2.版本区别dictEntry & redisObject详解)-CSDN博客 紧接着前两篇的总体介绍&#xff0c;从这篇开始&#x…

Android 环境搭建

1、桥接工具安装 网站地址&#xff1a;AndroidDevTools - Android开发工具 Android SDK下载 Android Studio下载 Gradle下载 SDK Tools下载 使用安装包&#xff1a; adb 查看当前链接成功的设备&#xff1a;adb devices 使用adb shell指令来进入到手机的后台&#xff1a;

dddddddddddddddddddd

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 磁盘满的本质分析 专栏&#xff1a;《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具…

什么是路由器公网IP?

路由器公网IP是指路由器在互联网上的唯一标识&#xff0c;用于区分不同的网络设备。在互联网连接中&#xff0c;每个设备都需要一个公网IP地址才能与外部网络进行通信。路由器公网IP的获取和使用对于网络连接和数据传输非常重要。 路由器公网IP的获取方式 通常&#xff0c;路由…

Spring第三天

一、AOP 1 AOP简介 问题导入 问题1&#xff1a;AOP的作用是什么&#xff1f; 问题2&#xff1a;连接点和切入点有什么区别&#xff0c;二者谁的范围大&#xff1f; 问题3&#xff1a;请描述什么是切面&#xff1f; 1.1 AOP简介和作用【理解】 AOP(Aspect Oriented Progra…

Qt网络编程-写一个简单的网络调试助手

环境 Windows&#xff1a;Qt5.15.2&#xff08;VS2022&#xff09; Linux&#xff1a;Qt5.12.12&#xff08;gcc) 源代码 TCP服务器 头文件&#xff1a; #ifndef TCPSERVERWIDGET_H #define TCPSERVERWIDGET_H #include <QWidget> namespace Ui { class TCPServerW…

单片机的省电模式及策略

目录 一、单片机省电的核心策略 二、单片机IO口的几种模式 三、单片机的掉电运行模式 &#xff08;1&#xff09; 浅谈cpu运行为什么会需要时钟&#xff1f; &#xff08;2&#xff09;STC15系列单片机内部可以配置时钟 &#xff08;3&#xff09;分频策略&#xff0c;降低…

ubuntu22.04 安装部署05:禁用默认显卡驱动

一、相关文章 ubuntu22.04安装部署03&#xff1a; 设置root密码-CSDN博客 《ubuntu22.04装部署01&#xff1a;禁用内核更新》 《ubuntu22.04装部署02&#xff1a;禁用显卡更新》 二、场景说明 Ubuntu22.04 默认显卡驱动&#xff0c;如果安装cuda&#xff0c;需要单独安装显…

什么是向量数据库?为什么向量数据库对LLM很重要?

由于我们目前生活在人工智能革命之中&#xff0c;重要的是要了解许多新应用程序都依赖于向量嵌入&#xff08;vector embedding&#xff09;。因此&#xff0c;有必要了解向量数据库以及它们对 LLM 的重要性。 我们首先定义向量嵌入。向量嵌入是一种携带语义信息的数据表示形式…

了解海外云手机的多种功能

随着社会的高度发展&#xff0c;海外云手机成为商家不可或缺的工具&#xff0c;为企业出海提供了便利的解决方案。然而&#xff0c;谈及海外云手机&#xff0c;很多人仍不了解其强大功能。究竟海外云手机有哪些功能&#xff0c;可以为我们做些什么呢&#xff1f; 由于国内电商竞…