目录

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【今日头条】相关推荐

  1. 用hive实现股票的波峰和波谷

    首先按照股票的代码分类,以时间排序 create table t2 as select code,time,price,row_number() over(partition by code orde ...

  2. SQL之一种通用的连续性问题处理方法【重分组算法】--HiveSQL面试题33

    目录 0 需求分析 1 数据准备 2 数据分析 3 小 结 0 需求分析 数据如下: wang 2020-05-01 wang 2020-05-01 wang 2020-05-01 wang 2020 ...

  3. javascript 求解图表曲线波峰与波谷,类似股票曲线

    1.通常我们对图表曲线去取波峰或者波谷的数据进行运算, 2.实现方式,用数组的第二项arr[1]与第一项arr[0]的差值进行比较 下面代码案例: (1)从数组左到右遍历 //     var arr ...

  4. 一个SQL获取某股票连续上涨的天数

    一个SQL获取某股票连续上涨的天数 1.1 问题 2.1 思路 3.1 创建Table 3.2 插入数据 3.3 sql1:计算每天的涨跌情况 3.4 sql2:根据sql1的结果计算连续上涨的时间段 ...

  5. sql 求相交的行_SQL相交

    sql 求相交的行 In a day to day scenario, we do meet with requirements where we need to get the common res ...

  6. 基于labview的波峰与波谷检测

    该程序使用 Sine Patter. vi(正弦)产生10个周期的正弦波,采样点数为1000,用 Waveform Peakectection.vⅵi检测信号的波峰位置及波峰值. 其效果如下图所示: ...

  7. C# 查询波峰、波谷

    代码如下: /// <summary> /// 寻峰(查找波峰或者波谷) /// </summary> /// <param name="data"& ...

  8. SQL server求百分比

    SQL server求百分比 select convert(decimal(18,0),(19.0/101.0)*100) as LT5--结果19 通过上面的语法可以将19/101的百分比算出 但是 ...

  9. 【数据结构与算法】查找波峰或者波谷

    给定一个没有重复数字的数组,找出里面的波峰或者波谷,没有返回-1.如果有,那么波峰波谷的两侧是单调的. 思路是二分查找.返回的条件是找到的中间值比两边都大或者比两边都小.那么如果不满足就需要查找左边或 ...

最新文章

  1. windows加载符号小计
  2. 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递
  3. 使用Subversion版本标识符
  4. javaweb学习总结(二十八)——JSTL标签库之核心标签
  5. 属性 Owner 不可用于 数据库...
  6. axure 组件_技巧分享 | Axure后台组件制作的全过程
  7. define定义的是什么类型_DEFINE_PROFILE用法介绍(1)
  8. 麦肯锡指出布局金融生态圈对中国国内银行意义重大
  9. 机器人环境感知算法发展概述
  10. 通过vba代码将word转换为PDF
  11. Unity3D学习之旅7-RPG游戏-更新与踩坑实录
  12. Skyscrapers (easy version)
  13. 安卓微信王者荣耀野区服务器,王者荣耀安卓微信136区运筹帷幄
  14. 全网疯传,谷歌BAT员工「LeetCode刷题手册」,1400+超详细算法题讲解。
  15. 【Android】'Unfortunately, Package Installer has Stopped'的解决办法
  16. 王曦:大数据人工智能中的运筹与决策科学
  17. 掌握.NET中的日常打印
  18. 如何把图片压缩到1M?怎么把照片缩小到1M?
  19. 饭局上领导递给你两根烟怎么做(懂得礼数领导赏识重用)
  20. yum安装软件时,出现“No package XXX available“的解决办法

热门文章

  1. Md5加密原理及其实现算法
  2. java md5加密 jar包_练习MD5加密jar包编写
  3. 由UE4一个离奇的崩溃探究 UObjects GC的实现方式
  4. 容器化部署(k8s)任务调度平台xxl-job(部署过程及踩坑问题记录)
  5. 国产板材测宽仪全中文操作界面
  6. ext grid设置选中行
  7. 计算机毕业设计基于asp.net家庭个人理财系统
  8. java关闭tomcat服务器端口_关闭tomcat端口号
  9. 架构设计师(Architect)的专业与角色(转载)
  10. .net 框架下绘制曲线图