SQL之求股票的波峰和波谷--HiveSQL面试题33【今日头条】
目录
0 需求
1 数据准备
2 数据分析
3 小 结
0 需求:求股票的波峰Crest 和 波谷trough
波峰:当天的股票价格大于前一天和后一天
波谷:当天的股票价格小于前一天和后一天数据准备: stock表有3个字段: id(股票id)、price(股票价格)、dt(日期)
--原始数据 stock表-------
id | price | dt |
1 | 20 | 2021-07-01 |
1 | 21 | 2021-07-02 |
1 | 19 | 2021-07-03 |
2 | 98 | 2021-07-01 |
1 数据准备
(1)数据
vim stock.txt
1 20 2020-09-01
1 21 2020-09-02
1 19 2020-09-03
2 98 2020-09-01
(2) 建表
drop table if exists stock
CREATE TABLE dan_test.stock ( id string, price string,dt string)
ROW format delimited FIELDS TERMINATED BY "\t";
(3)加载数据
load data local inpath "/home/centos/dan_test/stock.txt" into table stock;
(4)查询数据
hive> select * from stock;
OK
1 20 2020-09-01
1 21 2020-09-02
1 19 2020-09-03
2 98 2020-09-01
Time taken: 0.805 seconds, Fetched: 4 row(s)
2 数据分析
此题比较简单,主要是利用lag()和lead()函数便可以解决。直接给出SQL如下:
select *from(select *,case when price>lag_price and price>lead_price then "crest"when price<lag_price and price<lead_price then "trough"else nullend as resfrom(select id,price,dt,lag(price,1,price) over(partition by id order by dt) as lag_price,lead(price,1,price) over(partition by id order by dt) as lead_pricefrom stock) t) m
where res is not null
最终计算结果如下:
--------------------------------------------------------------------------------
OK
1 21 2020-09-02 20 19 crest
Time taken: 8.846 seconds, Fetched: 1 row(s)
3 小 结
本文主要分析了一种股票求波峰波谷的方法,利用SQL中的lag()和lead()函数进行解决
欢迎关注石榴姐公众号"我的SQL呀",关注我不迷路
SQL之求股票的波峰和波谷--HiveSQL面试题33【今日头条】相关推荐
- 用hive实现股票的波峰和波谷
首先按照股票的代码分类,以时间排序 create table t2 as select code,time,price,row_number() over(partition by code orde ...
- SQL之一种通用的连续性问题处理方法【重分组算法】--HiveSQL面试题33
目录 0 需求分析 1 数据准备 2 数据分析 3 小 结 0 需求分析 数据如下: wang 2020-05-01 wang 2020-05-01 wang 2020-05-01 wang 2020 ...
- javascript 求解图表曲线波峰与波谷,类似股票曲线
1.通常我们对图表曲线去取波峰或者波谷的数据进行运算, 2.实现方式,用数组的第二项arr[1]与第一项arr[0]的差值进行比较 下面代码案例: (1)从数组左到右遍历 // var arr ...
- 一个SQL获取某股票连续上涨的天数
一个SQL获取某股票连续上涨的天数 1.1 问题 2.1 思路 3.1 创建Table 3.2 插入数据 3.3 sql1:计算每天的涨跌情况 3.4 sql2:根据sql1的结果计算连续上涨的时间段 ...
- sql 求相交的行_SQL相交
sql 求相交的行 In a day to day scenario, we do meet with requirements where we need to get the common res ...
- 基于labview的波峰与波谷检测
该程序使用 Sine Patter. vi(正弦)产生10个周期的正弦波,采样点数为1000,用 Waveform Peakectection.vⅵi检测信号的波峰位置及波峰值. 其效果如下图所示: ...
- C# 查询波峰、波谷
代码如下: /// <summary> /// 寻峰(查找波峰或者波谷) /// </summary> /// <param name="data"& ...
- SQL server求百分比
SQL server求百分比 select convert(decimal(18,0),(19.0/101.0)*100) as LT5--结果19 通过上面的语法可以将19/101的百分比算出 但是 ...
- 【数据结构与算法】查找波峰或者波谷
给定一个没有重复数字的数组,找出里面的波峰或者波谷,没有返回-1.如果有,那么波峰波谷的两侧是单调的. 思路是二分查找.返回的条件是找到的中间值比两边都大或者比两边都小.那么如果不满足就需要查找左边或 ...
最新文章
- windows加载符号小计
- 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递
- 使用Subversion版本标识符
- javaweb学习总结(二十八)——JSTL标签库之核心标签
- 属性 Owner 不可用于 数据库...
- axure 组件_技巧分享 | Axure后台组件制作的全过程
- define定义的是什么类型_DEFINE_PROFILE用法介绍(1)
- 麦肯锡指出布局金融生态圈对中国国内银行意义重大
- 机器人环境感知算法发展概述
- 通过vba代码将word转换为PDF
- Unity3D学习之旅7-RPG游戏-更新与踩坑实录
- Skyscrapers (easy version)
- 安卓微信王者荣耀野区服务器,王者荣耀安卓微信136区运筹帷幄
- 全网疯传,谷歌BAT员工「LeetCode刷题手册」,1400+超详细算法题讲解。
- 【Android】'Unfortunately, Package Installer has Stopped'的解决办法
- 王曦:大数据人工智能中的运筹与决策科学
- 掌握.NET中的日常打印
- 如何把图片压缩到1M?怎么把照片缩小到1M?
- 饭局上领导递给你两根烟怎么做(懂得礼数领导赏识重用)
- yum安装软件时,出现“No package XXX available“的解决办法