1

我有两张桌子,一张是biz_dateholiday

create table biz_date (t_date string,start_date string,biz_day int)
create table holiday (h_date string)

现在我想计算 biz_date 表中每一行在 t_date 和 start_date 之间的 h_date 的数量,然后从 biz_day 中减去它。biz_day 是当月那一天的工作日,start_date 是 t_date 月份的开始日期。例如 biz_date 1990-02-06 1990-02-01 4

我试过这个 hiveql 查询

select b.t_date,b.biz_day,b.biz_date-cnt,h.h_date,
if(b.start_date>=h_date && b.t_date> h.h_date) then count(h_date)as cnt
from biz_date b,holiday h;
4

1 回答 1

0

这将为您提供 t_date biz_date 表中每条记录的 h_date 和 start_date 之间的假期数。我强烈建议将您的日期存储为日期而不是字符串。否则,如果日期格式不正确,或者不是 YEAR/MONTH/DAY 顺序,这可能无法正常工作。

SELECT bd.*,
       (SELECT COUNT(*) FROM holiday WHERE h_date BETWEEN bd.t_date AND bd.start_date) as holiday_count

FROM   biz_date as bd
于 2013-09-17T19:21:59.733 回答