1 drop table work_day_tbl;
2 create table work_day_tbl (
3 day string comment '日期'
4 ,week int comment '周一1,周日7'
5 ,work_day int comment '1工作日2周末3节假日'
6 ,work_day_rn int comment '工作日排序'
7 )
8 stored as orc
9 ;
10
11 insert overwrite table work_day_tbl
12 select
13 t2.day
14 ,t2.week
15 ,t2.work_day
16 ,sum(t2.flag) over(order by t2.day rows between unbounded preceding and current row ) as work_day_rn
17 from (
18 select
19 t1.*
20 ,case when work_day = 1 then 1 else 0 end as flag
21 from (
22 select '2013-08-15' as day,4 as week,1 as work_day union all
23 select '2013-08-16' as day,5 as week,1 as work_day union all
24 select '2013-08-17' as day,6 as week,2 as work_day union all
25 select '2013-08-18' as day,7 as week,2 as work_day union all
26 select '2013-08-19' as day,1 as week,1 as work_day union all
27 select '2013-08-20' as day,2 as week,1 as work_day union all
28 select '2013-08-21' as day,3 as week,1 as work_day union all
29 select '2013-08-22' as day,4 as week,1 as work_day union all
30 select '2013-08-23' as day,5 as week,1 as work_day union all
31 select '2013-08-24' as day,6 as week,2 as work_day union all
32 select '2013-08-25' as day,7 as week,2 as work_day union all
33 select '2013-08-26' as day,1 as week,1 as work_day union all
34 select '2013-08-27' as day,2 as week,1 as work_day union all
35 select '2013-08-28' as day,3 as week,1 as work_day
36 ) t1
37 ) t2
38 ;
![]()