hive 中少量数据验证函数的方法-stack

可以使用 stack 将少量数据直接写在sql中,然后用于验证是否正确

1、每个省累计销量前1名的城市 t1(pro_name,city_name,sale_num,sale_date)
源数据:
‘河北’,‘石家庄’,‘1’,‘2022-01-01’
,‘河北’,‘石家庄’,‘2’,‘2022-01-02’
,‘河北’,‘石家庄’,‘3’,‘2022-01-03’
,‘河北’,‘张家口’,‘2’,‘2022-01-02’
,‘河北’,‘张家口’,‘3’,‘2022-01-03’
,‘河北’,‘张家口’,‘2’,‘2022-01-02’
,‘陕西’,‘西安’,‘0’,‘2022-01-02’
,‘陕西’,‘西安’,‘1’,‘2022-01-03’
,‘陕西’,‘西安’,‘2’,‘2022-01-02’
,‘陕西’,‘延安’,‘0’,‘2022-01-02’
,‘陕西’,‘延安’,‘1’,‘2022-01-03’
,‘陕西’,‘延安’,‘0’,‘2022-01-02’

结果:
city_name sum_sale
张家口 7
西安 3
答:

with temp_data as (select stack(12,'河北','石家庄','1','2022-01-01','河北','石家庄','2','2022-01-02','河北','石家庄','3','2022-01-03','河北','张家口','2','2022-01-02','河北','张家口','3','2022-01-03','河北','张家口','2','2022-01-02','陕西','西安','0','2022-01-02','陕西','西安','1','2022-01-03','陕西','西安','2','2022-01-02','陕西','延安','0','2022-01-02','陕西','延安','1','2022-01-03','陕西','延安','0','2022-01-02') as (pro_name,city_name,sale_num,sale_date)
)
select 
* 
from (
select t.pro_name,t.city_name,t.sale_cnt,row_number() over(partition by pro_name order by sale_cnt desc) as rnk
from (
select pro_name,city_name,sale_num,sum(sale_num) as sale_cnt
from temp_data
group by pro_name,city_name
) t 
) t1
where t1.rnk = 1
;

2、求股票的波峰和波谷
波峰:当天的股票价格大于前一天和后一天
波谷:当天的股票价格小于前一天和后一天
数据准备: stock表有3个字段: stock_name(股票名称)、stock_price(股票价格)、stats_date(日期)

源数据:
‘A’,‘20210621’,‘13’
‘A’,‘20210622’,‘11’
‘A’,‘20210623’,‘17’
‘A’,‘20210624’,‘12’
‘A’,‘20210625’,‘14’
‘B’,‘20210621’,‘16’
‘B’,‘20210622’,‘12’
‘B’,‘20210623’,‘12’
‘B’,‘20210624’,‘17’
‘B’,‘20210625’,‘13’

结果:
stock_name stats_date stock_price price_type
A 20210621 13 其他
A 20210622 11 波谷
A 20210623 17 波峰
A 20210624 12 波谷
A 20210625 14 其他
B 20210621 16 其他
B 20210622 12 其他
B 20210623 12 其他
B 20210624 17 波峰
B 20210625 13 其他

答:
with temp_data as (
select stack(10,
‘A’,‘20210621’,‘13’
,‘A’,‘20210622’,‘11’
,‘A’,‘20210623’,‘17’
,‘A’,‘20210624’,‘12’
,‘A’,‘20210625’,‘14’
,‘B’,‘20210621’,‘16’
,‘B’,‘20210622’,‘12’
,‘B’,‘20210623’,‘12’
,‘B’,‘20210624’,‘17’
,‘B’,‘20210625’,‘13’
) as (stock_name,stock_date,stock_price)
)
select
t.stock_name,
t.stock_date,
t.stock_price,
case when t.stock_price < t.lag_price and t.stock_price < t.lead_price then ‘波谷’
when t.stock_price > t.lag_price and t.stock_price > t.lead_price then ‘波峰’
else ‘其他’ end as price_type
from (
select
stock_name,
stock_date,
stock_price,
lag(stock_price,1) over(partition by stock_name order by stock_date ) as lag_price,
lead(stock_price,1) over(partition by stock_name order by stock_date ) as lead_price
from temp_data
) t

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

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

相关文章

【vue3 路由使用与讲解】vue-router : 超详细全面介绍

# 核心内容介绍 路由跳转有两种方式&#xff1a; 声明式导航&#xff1a;<router-link :to"...">编程式导航&#xff1a;router.push(...) 或 router.replace(...) &#xff1b;两者的规则完全一致。 push(to: RouteLocationRaw): Promise<NavigationFailur…

Secure Boot(安全启动)

Secure Boot&#xff08;安全启动&#xff09;的原理基于链式验证&#xff0c;这是一种确保计算机在启动过程中只加载和执行经过认证的软件的机制。这个过程涉及到硬件、固件和操作系统的多个层面。以下是Secure Boot的基本原理&#xff1a; 密钥和证书&#xff1a;Secure Boot…

day07_分类管理EasyExcel品牌管理

文章目录 1 分类管理1.1 菜单添加1.2 表结构介绍1.3 页面制作1.4 列表查询1.4.1 需求分析1.4.2 后端接口CategoryCategoryControllerCategoryServiceCategoryMapperCategoryMapper.xml 1.4.3 前端对接category.jscategory.vue 2 EasyExcel2.1 数据导入导出意义2.2 EasyExcel简介…

ABAP - SALV教程 01- 开篇:打开SALV的三种方式之一

关于SALV&#xff0c;这里参考巨佬江正军的文章讲解&#xff0c;在做SAP开发的遇到困难和瓶颈的时候&#xff0c;每每读到巨佬的文章都会灵感爆发、醍醐灌顶。https://www.cnblogs.com/jiangzhengjun/p/4291387.html 博主由于是由JAVA转型的ABAP开发&#xff0c;刚接触ABAP的时…

力扣细节题:判断是否为平衡二叉树

经典题&#xff0c;需要记忆&#xff0c;且注意fabs和fmax函数的使用 /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/int deep(struct TreeNode*root){if(rootNULL){return 0;}r…

Unity3D 渲染队列 ZTest与ZWrite详解

前言 在Unity3D中&#xff0c;渲染队列&#xff08;Rendering Queue&#xff09;是一个非常重要的概念&#xff0c;它决定了游戏中各个物体的渲染顺序和优先级。而在渲染队列中&#xff0c;ZTest和ZWrite又是两个关键的参数&#xff0c;它们决定了物体在渲染的过程中如何处理深…

研发效能最佳实践:持续集成应用实践丨IDCF

作者&#xff1a;谢带达 研发效能&#xff08;DevOps&#xff09;工程师&#xff08;中级&#xff09;认证学员 一、DevOps概述 DevOps的发展可以追溯到2009年&#xff0c;当时由Patrick Debois和Andrew Clay Shafer发起了第一次DevOps Days会议。随后&#xff0c;DevOps开始…

【R语言简介】讲解

R语言简介&#xff0c;环境与基础语法及注释 1. R语言简介2. 环境安装3. 基础语法3.1 变量赋值3.2 数据结构3.3 函数调用3.4 控制流3.5 注释 4. 基本的数据操作和函数 1. R语言简介 R语言是一种专为统计分析、数据挖掘和图形展示而设计的编程语言和软件环境&#xff0c;它由统…

应用引导页配置相关 - iOS

应用引导页配置相关,通过 ScrollView 滑动至末页点击进入主页,具体实现方式如下,可供参考; /**加载引导页*/ - (void)loadGuidePage {// 基础配置self.window [[UIWindow alloc] initWithFrame:SCREEN_RECT];self.window.backgroundColor [UIColor whiteColor];viewControll…

永磁同步电机无感FOC(龙伯格观测器)算法技术总结-实战篇

文章目录 1、ST龙伯格算法分析&#xff08;定点数&#xff09;1.1 符号说明1.2 最大感应电动势计算1.3 系数计算1.4 龙伯格观测器计算1.5 锁相环计算1.6 观测器增益计算1.7 锁相环PI计算&#xff08;ST&#xff09;1.8 平均速度的用意 2、启动策略2.1 V/F压频比控制2.2 I/F压频…

qnx shell sh ,linux shell bash

for i in 1 2 3 4 5 doecho $i doneecho $SHELL Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门_centos sh bash-CSDN博客

php cli 多进程编程

前言 php cli 命令模式我想在日常开发中&#xff0c;大家用的都比较少。其实&#xff0c;在某些场景&#xff0c;cli命令真的很有作用&#xff0c; 我举个例子 在mysql数据库的某个表tab1中数据量有3000W条数据&#xff0c;现在需要对这张表中的每一条数据做计算处理。将处理…

设计模式(含7大原则)面试题

目录 主要参考文章 设计模式的目的 设计模式的七大原则 设计模式的三大分类及关键点 1、创建型模式(用于解耦对象的实例化过程) 2、结构型模式 3、行为型模式 23种设计模式(乱序--现学现写,不全面--应付面试为主) 单例模式 模板模式 哈哈哈哈哈 声明 此文只针…

策略模式代码示例(二)

一、定义 策略模式&#xff0c;针对每一个不同的类型&#xff0c;调用具有共同接口的不同实现类&#xff0c;从而使得它们可以相互替换。 策略模式 &#xff0c;针对实现同一接口的不同的类&#xff0c;采用不同的策略。比如&#xff0c;面对高级会员、初级会员会采用不同的折…

详解字符串函数<string.h>(下)

1. strncpy函数的使用和模拟实现 char* strncpy(char* destination, const char* source, size_t num) 1.1 函数功能以及用法 拷贝指定长度的字符串 将“source”指向的字符串中的“num”个字符拷贝到“destination”指向的字符数组中。相比于strcpy函数&#xff0c;该函数多…

SQL语言的五大分类 (DQL、DDL、DML、DCL、TCL)

目录 一、DQL 二、DDL 三、DML 四、DCL 五、TCL 一、DQL&#xff08;数据查询语言&#xff09; Data Query Language&#xff0c;数据查询语言&#xff1a; select&#xff1a;用于数据查询 关键字&#xff1a;SELECT ... FROM ... WHERE 二、DDL&#xff08;数据定义语…

swift 长按桌面图标弹出快捷选项

文章目录 一、3D Touch二、主屏交互1. 静态添加2. 动态添加三、监听主屏交互按钮的点击事件四、预览和跳转1. 注册3D touch2. 实现协议3. 在目标控制器复写previewActionItems4. 使用UIContextMenuConfiguration一、3D Touch 3D Touch通过屏幕下方的压力感应器来感知不同的压力…

Cesium地表透明

之前Cesium是不能地表透明的&#xff0c;需要改内部代码&#xff0c;将GlobeSurfaceTileProvider.js中的PASS.GLOBE改成PASS.TRANSPARENT&#xff0c;通过将地表的drawCommand放到透明队列里渲染。现在发现有了新的方法&#xff08;其实2020年就有该方法了&#xff09;&#xf…

数据库管理-第157期 Oracle Vector DB AI-08(20240301)

数据库管理157期 2024-03-01 数据库管理-第157期 Oracle Vector DB & AI-08&#xff08;20240301&#xff09;1 创建示例向量2 查找最近向量3 基于向量簇组的最近向量查询总结 数据库管理-第157期 Oracle Vector DB & AI-08&#xff08;20240301&#xff09; 作者&…

【axiox】前后端接口通讯数据交互

重要全局配置&#xff1a; axios.create(); 设置axios请求的公共配置信息。 service.interceptors.request.use((config)>{}) 请求拦截器 service.interceptors.response.use((res)>{},(err)>{}) 响应拦截器 const source axios.CancelToken.source(); 用…