0- 描述
描述:时间序列–进度及剩余
表名:t15
表字段及内容:
date_id is_work
2017-07-31 1
2017-08-01 1
2017-08-02 1
2017-08-03 1
2017-08-04 1
2017-08-05 0
2017-08-06 0
1- 问题一
描述:求每天的累计周工作日,剩余周工作日
输出结果如下所示:
date_id week_to_work week_left_work
2017-07-31 1 4
2017-08-01 2 3
2017-08-02 3 2
2017-08-03 4 1
2017-08-04 5 0
2017-08-05 5 0
2017-08-06 5 0
参考答案:
select
date_id,
week_to_work,
week_sum_work-week_to_work as week_left_work
from(
select
date_id,
sum(is_work) over(partition by year,week order by date_id) as week_to_work,
sum(is_work) over(partition by year,week) as week_sum_work
from(
select
date_id,
is_work,
year(date_id) as year,
weekofyear(date_id) as week
from t15
) ta
) tb order by date_id;
该博客介绍了如何使用SQL查询来计算每日的累计周工作日和剩余工作日。通过示例数据表t15,展示了如何利用窗口函数over()对is_work字段进行求和,从而得到每周的工作日累计和总和,进一步计算出剩余工作日。输出结果展示了一个日期范围内的每天累计工作日和剩余工作日情况。
1435

被折叠的 条评论
为什么被折叠?



