场景一:求股票最长连续上涨天数

with t(code  ,  dt  ,  price ) as (
select 110330  , date'2009-01-01'  ,   1.87 from dual union all
select 110330  , date'2009-01-02'  ,   1.98 from dual union all
select 110330  , date'2009-01-05'  ,   2.03 from dual union all
select 110330  , date'2009-01-06'  ,   1.85 from dual union all
select 110330  , date'2009-01-07'  ,   2.0 from dual union all
select 110330  , date'2009-01-08'  ,   1.98 from dual union all
select 110330  , date'2009-01-09'  ,   1.95 from dual union all
select 110330  , date'2009-01-12'  ,   1.8 from dual union all
select 110330  , date'2009-01-13'  ,   1.87 from dual union all
select 110330  , date'2009-01-14'  ,   1.95 from dual union all
select 110330  , date'2009-01-15'  ,   2.09 from dual union all
select 110330  , date'2009-01-19'  ,   2.11 from dual union all
select 110330  , date'2009-01-16'  ,   2.22 from dual union all
select 110330  , date'2009-01-21'  ,   1.97 from dual union all
select 110330  , date'2009-01-20'  ,   2.05 from dual union all
select 110330  , date'2009-01-22'  ,   1.93 from dual union all
select 110330  , date'2009-01-23'  ,   1.96 from dual union all
select 110330  , date'2009-01-26'  ,   2.1 from dual union all
select 110330  , date'2009-01-27'  ,   2.05 from dual union all
select 110330  , date'2009-01-28'  ,   2.12 from dual union all
select 110330  , date'2009-01-30'  ,   1.98 from dual union all
select 110330  , date'2009-01-29'  ,   2.12 from dual
)select
t3.*,
sum(1) over(partition by code,ss order by dt)-1  连涨天数
from (
select t2.*,sum(d) over(partition by code order by dt) ssfrom(select t.*,
case when nvl(lag(price) over (partition by code order by dt),0) >price then 1 else 0 end dfrom t
) t2
)t3
--最长上涨时间的话对上面结果求max

二、场景二:连续涨幅超过5%天数最多的股票ID和连续天数。

现有每个交易日每只股票的开盘价及收盘价,在表stock_price表中,表中字段如下:

另有交易日期记录表stock_date表,字段如下:

现要得到,连续涨幅超过5%天数最多的股票ID和连续天数。(连续天数计算连续的交易工作日)

解题思路

1.计算每一只股票每天的涨跌幅,筛选出涨幅超过5%的数据
2.通过stock_date表中的ID排除周末为非交易日带来的干扰(ID为连续自增,如果直接按照交易日期判断会因为周末为非交易日,导致无法计算满足题目要求的最大连续工作日)
3.按每一只股票计算连续涨幅超过5%的天数
4.找出最长的时间和对应的股票ID

 --1.计算每一只股票每天的涨跌幅,筛选出涨幅超过5%的数据
with t1 as (
select stock_id,date
from stock_price
where (s_price-k_price)/k_price > 0.05);--2.通过stock_date表中的ID排除周末为非交易日带来的干扰
with t2 as (
select stock_id,id
from t1
left join
stock_date tt2
on t1.date = tt2.date);--3.按股票ID对日期进行排序,若是连续天数,id-ranks的值应该是相同的
with t3 as (
select stock_id,id,row_number() over(partition by stock_id order by id) as ranks
from t2    );--4.计算每只股票在所有交易日内,有出现连续涨幅5%以上的天数
with t4 as (
select stock_id,judge,count(1) as count_day--连续天数计算
from
(select stock_id,id-ranks as judgefrom t3
)
group by stock_id,judge  );--5.在4的基础上取最大连续天数即可
select stock_id,max(count_day) as max_day
from t4;

HIVE实战处理(二十二)股票连续上涨最长的天数相关推荐

  1. Android项目实战(三十二):圆角对话框Dialog

    原文:Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对 ...

  2. Android项目实战(二十二):启动另一个APP or 重启本APP

    Android项目实战(二十二):启动另一个APP or 重启本APP 原文:Android项目实战(二十二):启动另一个APP or 重启本APP 一.启动另一个APP 目前公司项目需求,一个主AP ...

  3. R语言实战笔记--第十二章 重抽样(置换检验)与自助法

    R语言实战笔记–第十二章 重抽样(置换检验)与自助法 标签(空格分隔): R语言 重抽样 自助法 置换检验 置换检验 双样本均值检验的时候,假设检验的方法就是,检查正态性.独立性.方差齐性,分别对应的 ...

  4. 【深度学习】:《PyTorch入门到项目实战》(十二)卷积神经网络:填充(padding)和步幅(stride)

    [深度学习]:<PyTorch入门到项目实战>(十二)填充(padding)和步幅(stride) ✨本文收录于[深度学习]:<PyTorch入门到项目实战>专栏,此专栏主要记 ...

  5. 抖音短视频数据抓取实战系列(十二)——抓取实战BUG总集

    抖音短视频数据抓取实战系列(十二)--抓取实战BUG总集 1.模拟器自带的Xposed框架无法安装. 2.Fiddler无法监测雷电模拟器上的数据. 3.模拟器抖音用户详情页为空(未解决). 4.pi ...

  6. OpenCV C++案例实战二十二《手势识别》

    OpenCV C++案例实战二十二<手势识别> 前言 一.手部关键点检测 1.1 功能源码 1.2 功能效果 二.手势识别 2.1算法原理 2.2功能源码 三.结果显示 3.1功能源码 3 ...

  7. 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环

    目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...

  8. 自然语言处理系列二十二》词性标注》词性标注原理》词性介绍

    注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书<分布式机器学习实战>(人工智能科学与技术丛书)[陈敬雷编著][清华大学出版社] 文章目录 自然语言处理系列二十二 词性 ...

  9. 2021年大数据Hadoop(二十二):MapReduce的自定义分组

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 MapReduce的自定义分组 需求 分析 实现 第一步: ...

最新文章

  1. robotframework的学习笔记(十二)------DatabaseLibrary 库
  2. leetcode word break java,Word Break leetcode java
  3. MySQL性能优化之char、varchar、text的区别
  4. 51nod 1158 全是1的最大子矩阵(单调栈 ,o(n*m))
  5. 服务器是通用计算机吗,服务器与台式计算机不同吗?有何区别?
  6. Oracle Create Profile
  7. 物联网大战打响,6 岁的涂鸦智能这样突出重围!
  8. Python-求解两个字符串的最长公共子序列
  9. 使用powershell执行在线脚本的具体示例
  10. 约瑟夫环问题 poj 1012 poj 2244
  11. mshtml 解析html c,关于MSHTML
  12. 2022显卡、CPU天梯图
  13. Java毕设项目电商后台管理系统计算机(附源码+系统+数据库+LW)
  14. Verilog除法器的设计总结
  15. phalapi做登录检测_Phalapi使用教程
  16. 2022-2027年中国涡桨发动机行业发展监测及投资战略研究报告
  17. 计算机组成原理唐朔飞第六章知识点总结,计算机组成原理(唐朔飞)教材笔记 第六章 计算机的运算方法...
  18. 团伙分类:有一份数据部分如下,比如:刘备和关羽有关系,说明他们是一个团伙
  19. CMake中file的使用
  20. 2019 年 Q1 全球云基础设施市场份额揭晓,AWS继续领跑市场;Mesos官方回应Twitter“抛弃”Mesos……...

热门文章

  1. 商汤java实习生面试题
  2. python的安装目录配置到环境变量的path当中_【转】python 环境变量配置
  3. 台湾东吴大学采用达索EXALEAD创建高等教育信息智能开发平台
  4. cJSON库的使用详情,cJSON动态库制作
  5. 【Unity植物大战僵尸】阳光点击的效果及相关逻辑实现(三)
  6. 探索Headless Chrome
  7. 深度学习——残差网络(ResNet)
  8. 基于vue加springmvc实现的房地产管理系统
  9. linux普通用户使用1024以下的端口(80)
  10. java char和int的区别_int类型和char类型的区别