我有两个表,一个是biz_date
和holiday
。
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的月份的开始日期.eg 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;
答案 0 :(得分:0)
这将为您提供t_date biz_date表中每条记录的h_date和start_date之间的假日数。我强烈建议您将日期存储为日期而非字符串。否则,如果日期格式不正确,或者未按年/月/日顺序,则可能无法正常工作。
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