用hive写一个获取本日期的季度初的sql

本文介绍了如何在Hive中通过SQL计算当前日期所在季度的起始日期,通过计算月份除以3.1得到季度数,再乘以3得到季度初的月份。示例代码展示了如何结合业务需求,计算季度、月度和年度的日均发生额。
摘要由CSDN通过智能技术生成

由于项目需要获取(本季度的的发生额总和)/(本季度经历的天数)的数据(还有月均,年均的数据)。

判断季度的时候是一个难点,开始的时候写了一堆case when 来判断月份,后来写着写着发现,这样也太笨了。于是就开始想办法。

突然灵机一动,一个季度都是以3个月份为一个体的。何不先算出本日是第几季度,然后再乘以3就是季度初啊。

因为3月份除以3就等于1了.必须除一个比3大的数,而且月份的数字只会到12.不用担心除以3.1会出什么乱子。

下面是计算第几季度的sql

select floor(substr('2017-02-04',6,2)/3.1)+1

出来了第几季度之后就简单了。直接*3呗  就是季度的初始日期了。

select (floor(substr('2017-02-04',6,2)/3.1)*3)+1

 

具体源代码:

select bill_no,

sum(case when part_dt >= concat(substr('${START_DATE}',1,7),'-01') and part_dt<='${START_DATE}' then nvl(amt,0) else 0 end)/((DATEDIFF('${START_DATE}',CONCAT(SUBSTR('${START_DATE}',1,7),'-01'))+1)) month_da,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值