我想根据日期间隔将单个任务“分配”或“拆分”几小时到iso周。但我不知道如何在Postgresql中做到这一点。从isoweek中间隔和组中拆分值 - Postgresql
CREATE TABLE task
(id int4, start date, stop date, hr int4);
INSERT INTO task
(id, start, stop, hr)
VALUES
(1, '2017-01-01','2017-01-31', 80),
(2, '2017-01-01','2017-02-28', 120);
的这些2个任务所需的输出应该是这样的:
The 80 hr of task 1 should be distributed into 5 weeks
201701 16 hr
201702 16 hr
201703 16 hr
201704 16 hr
201705 16 hr
The 120 hr of task 2 should be distributed into 9 weeks
201701 13,3 hr
201702 13,3 hr
201703 13,3 hr
201704 13,3 hr
201705 13,3 hr
201706 13,3 hr
201707 13,3 hr
201708 13,3 hr
201709 13,6 hr
这估计是一个粗略的估计,并且可以从现实不同。
我能想到的三个步骤(和无法弄清楚如何):
- 估计周数每任务
- 与周
- 分组这样的结果通过ISO周 数除以小时
谢谢,但是他给出了一个空的结果:http://sqlfiddle.com/#!15/93ee1/12我需要ISO周。 – sibert
是的,这是ISO周的棘手的东西。 2017-01-01属于ISO 2016年第52周,而'generate_series(52,5)'产生一组空行。如果从1月到3月更改表格中的日期,则查询工作得很好。 – Patrick