Hive习题汇总(持续汇总中)

1. 呈现连续上涨超过 5 天的股票及上涨天数

解释:
code - 股票代码
ddate - 日期
price - 股票价格

with tmp as(
select 
      code,
      ddate,
      price,
      lag(price, 1, price) over(partition by code order by ddate) as lag_price, --求股票上一天的价格
      case when price >= lag(price, 1, price) over(partition by code order by ddate) then 0 else 1 end as changeSign --价格上涨为0, 价格下降为1
from stock_record
)
,tmp2 as(
select 
      code,
      ddate,
      price,
      lag_price,
      changeSign,
      sum(changeSign) over(partition by code order by ddate) as unRiseDays --求价格下降的天数
from tmp
)
,tmp3 as (
--
select 
      code,
      unRiseDays,
      count(1) as risenum --上涨天数:实际需要 -1,可理解为上涨记录数
from tmp2
group by code,unRiseDays
)
select 
      code,
      max(risenum)-1 as maxRiseDays --最大上涨天数
from tmp3
group by code
having max(risenum) > 5
;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值