为数据库的每一行计算商业日



我有一个表,每行都包含一个带有时间戳格式的开始和结束日期,需要根据开始和结束之间的工作日数对它们进行筛选。

基于这里发布的一些解决方案,我创建了一个包含所有天数的单独表格,并用如下布尔字段标记它们:

CREATE TABLE tbl_holiday (h_date TIMESTAMP, is_holiday BOOLEAN)

是否可以编写一个查询,根据start_date和date_date之间的天数进行筛选,并将_Is_holiday设置为False?

我的数据库是Impala。

您通常会将原始表与假日表连接起来,假日表的开始日期和结束日期条件不相等,然后进行聚合,最后在having子句中根据目标值的工作日总数进行筛选:

select t.id, t.start_date, t.end_date
from mytable t
inner join tbl_holiday h on h.hdate between t.start_date and t.end_date
group by t.id, t.start_date, t.end_date
having sum(cast(is_holiday as int)) = :no_of_business_days

相关内容

  • 没有找到相关文章

最新更新