如何解决Impala获取2个日期之间的差额不包括周末
我正在尝试获取Impala中两个日期之间的日差,但我需要排除周末。
我知道应该是这样,但是我不确定周末的演出会怎么样...
DATEDIFF(resolution_date,created_date)
谢谢!
解决方法
执行此任务的一种方法是枚举范围内的每一天,然后在计数之前过滤掉周末。
某些数据库具有生成日期序列的特定功能,而另一些数据库则提供递归的common-table-expression。 Impala不支持递归查询,因此我们需要研究替代解决方案。
如果表的行数至少等于某个范围内最大天数,则可以使用row_number()
来偏移开始日期,然后使用条件聚合来计算工作日。
假设您的表名为mytable
,以列id
作为主键,并且大表名为bigtable
,您可以这样做:
select
t.id,sum(
case when dayofweek(dateadd(t.created_date,n.rn)) between 2 and 6
then 1 else 0 end
) no_days
from mytable t
inner join (select row_number() over(order by 1) - 1 rn from bigtable) n
on t.resolution_date > dateadd(t.created_date,n.rn)
group by id
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。