hive日期维表 上周五到本周四为一周

需求:
在日期维表中添加一列,周,上周五到本周四代表一周
直接上sql:


select  aa.dates,substr(dates,0,4) as years,substr(dates,0,7) as months,bb.weekss as weeks from 
(
select dates, concat(substr(dates,0,4),date_format(date_sub(dates, 5), '%w')) as weeks from tmp.datess
) aa
left join 
(
select 
b.weeks,
concat(min(b.dates),'-',max(b.dates)) as weekss
from 
(
select a.*,row_number() over(partition by a.weeks order by dates)  as rank from 
(
select dates, concat(substr(dates,0,4),date_format(date_sub(dates, 5), '%w')) as weeks from tmp.datess  
--备注解释:此处是为了保证上周五到本周四对应的周是一样的,可以日期减去5表示当日期是周四 让他表示的是上周六 都是正常日期每周的最后一天,
也可以在此处日期加2 表示当日期是周四 让他表示的是本周周六 都是正常日期每周的最后一天 
) a
) b
group by 
b.weeks
) bb
on aa.weeks = bb.weeks

版权声明:本文为zahuali原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。