1

と の 2 つのテーブルが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 の月の開始日です。例: 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 の間の休日数が得られます。日付を文字列ではなく日付として保存することを強くお勧めします。そうしないと、日付が正しくフォーマットされていないか、年/月/日の順序になっていない場合、これは正しく機能しない可能性があります。

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 に答える