HiveSQL题——炸裂+开窗

ops/2024/9/23 9:37:32/

一、每个学科的成绩第一名是谁?

0 问题描述

 基于学生成绩表输出每个科目的第一名是谁呢?

1 数据准备

with t1 as(select'zs'                                           as name,'[{"Chinese":80},{"Math":70},{"English":60}]' as score_extunion allselect'ls'                                           as name,'[{"Chinese":90},{"Math":70},{"English":90}]' as score_extunion allselect'ww'                                           as name,'[{"Chinese":60},{"Math":90},{"English":80}]' as score_ext),t2 as(selectname,-- 需要把 [] 和 " 和 {} 都给去掉,方面后面操作regexp_replace(score_ext, '\\[|\\{|\\}|\\"|\\]', '') as scoresfrom t1),t3 as (selectname,split(score, ":")[0] as course,split(score, ":")[1] as scorefrom t2lateral view explode(split(scores, ',')) expl as score)selectname,course,score
from (selectcourse,name,score,row_number() over (partition by course order by score desc) as rnfrom t3) t4
where rn = 1;

2 数据分析

步骤1:采用 regexp_replace(score_ext, '\\[|\\{|\\}|\\"|\\]', '') as scores,去除相关符号后,t2输出:

步骤2:基于t2表进行lateral view explode 侧写炸裂时,t3输出:

步骤3:基于t3表进行 row_number() over (partition by course order by score desc) as rn
开窗排序(分组topN),t4输出:

3 小结

该题目利用(行转列)炸裂+开窗进行 解决;用到的Hive正则表达式如下:

regexp_replace正则替换

  • 语法: regexp_replace(string A, string B, string C)
  • 操作类型: strings
  • 返回值: string
  • 说明: 将字符串A中的符合java正则表达式B的部分替换为C。

(06)Hive——正则表达式_hive 正则表达式-CSDN博客


http://www.ppmy.cn/ops/87455.html

相关文章

QML编程知识——Quick动画类型详解及示例

目录 引言 一、动画的基本概念 常用的动画类型 二、动画的应用示例 1. 属性动画(PropertyAnimation) 2. 数值动画(NumberAnimation) 3. 颜色动画(ColorAnimation) 4. 旋转动画(Rotation…

二叉搜索树,Map,Set,LeetCode刷题

二叉搜索树&#xff0c;Map&#xff0c;Set 1. 二叉搜索树2. 二叉搜索树的模拟实现1.1 插入操作1.2 查找操作1.3 删除操作 3. 二叉搜索树时间复杂度分析4. TreeMap和TreeSet5. Map5.1 Map的常用方法5.2 Map.Entry<K,V> 6. Set6.1 Set的常用方法 LeetCode刷题1. 二叉搜索树…

Python面试宝典第25题:括号生成

题目 数字n代表生成括号的对数&#xff0c;请设计一个函数&#xff0c;用于能够生成所有可能的并且有效的括号组合。 备注&#xff1a;1 < n < 8。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;["((()))","(()())","(())()"…

POI 快速入门 Excel导入导出

Excel导入导出 1 什么是POI POI简介&#xff08;Apache POI&#xff09;&#xff0c;Apache POI是Apache软件基金会的开放源码函式库&#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI官网http://poi.apache.org/ HSSF &#xff0d; 提…

数据灾备及时恢复应急预案

第一节总则 1&#xff0c;灾难备份的目的 为了规范本所重要数据备份清单的建立&#xff0c;备份的职责&#xff0c;备份的检查。以及系统受到破坏后的恢复工作&#xff0c;合理防范计算机及信息系统使用过程中的风险&#xff0c;特制定本预案。 2&#xff0c;灾难恢复的定义 灾…

数据挖掘-数据预处理

来自&#x1f96c;&#x1f436;程序员 Truraly | 田园 的博客&#xff0c;最新文章首发于&#xff1a;田园幻想乡 | 原文链接 | github &#xff08;欢迎关注&#xff09; 文章目录 3.3.1 数据的中心趋势平均数和加权平均数众数&#xff0c;中位数和均值描述数据的离散程度 &a…

Java实战 - 查找最长递增子序列

作者&#xff1a;逍遥Sean 简介&#xff1a;一个主修Java的Web网站\游戏服务器后端开发者 主页&#xff1a;https://blog.csdn.net/Ureliable 觉得博主文章不错的话&#xff0c;可以三连支持一下~ 如有疑问和建议&#xff0c;请私信或评论留言&#xff01; 前言 在计算机科学中…

同步交互与异步交互:深入解析与选择

同步交互与异步交互&#xff1a;深入解析与选择 1、同步交互2、异步交互3、选择策略 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在软件开发的世界里&#xff0c;交互方式主要分为两大类&#xff1a;同步与异步。下面是对这两种方式的解…