Postgresql 8.4。
我是这个概念的新手,所以如果人们可以教我,我会很感激。
对于奥巴马医改,每周工作30小时或以上的人必须获得与其他工作人员相同的医疗保健。我们负担不起,所以我们必须限制临时工和兼职人员的工作时间。这影响了整个国家。
EXTRACT(week from '2014-01-01')
计算星期一的开始时间,因此对我不起作用。 Link here. 如果不这样做,我会如何做到这一点,每个人每个星期都要说一个单独的查询?我们有200人来处理。
谢谢。
答案 0 :(得分:2)
我已经设置了一个符合您格式的表格:
select * from employeetime order by date;
id date hours
1 2014-11-06 10
1 2014-11-07 3
1 2014-11-08 5
1 2014-11-09 3
1 2014-11-10 5
你可以通过转移来获得周日开始的一周。注意,这里的第9个是星期日,所以这就是我们想要的边界。
select *, extract(week from date + '1 day'::interval) as week
from employeetime
order by week;
id date hours week
1 2014-11-07 3 45
1 2014-11-06 10 45
1 2014-11-08 5 45
1 2014-11-09 3 46
1 2014-11-10 5 46
现在周日在周日而非周一转移。从这里开始,按周/员工获得小时数的查询很简单:
select id, sum(hours) as hours, extract(week from date + '1 day'::interval) as week
from employeetime
group by id, week
order by id, week;
id hours week
1 18 45
1 8 46