MySql - 每小时工人的总和

时间:2014-07-01 18:07:42

标签: php mysql

去年StackOverflow提供了一些(很多)帮助,我有一个功能,可以显示当前有多少员工在工作。

代码工作正常 - 但现在我们实施了夜班,原始查询只显示了当前日期开始的班次。工作夜班的人可能会在晚上10点办理登机手续,早上8点休假 - 在当前查询中,他们不会出现,因为startdate就在前一天......

我一直在尝试在查询中实现enddate,但没有运气。

 teamslots
---------
id
startdate
starttime
enddate
endtime

 teamslot_schedule
-----------------
id
slotid (joins to is in teamslots)
userid

 shifthours
----------
thehour

这是原始查询 - 我真的可以使用一些帮助,使查询包括员工,这些员工在前一天开始转移,但结束"今天"。

SELECT
    DATE_FORMAT(d.startdate + INTERVAL s.thehour HOUR, '%Y-%m-%d %H') AS date,
    COUNT(DISTINCT ts.userid) AS users
FROM
    shifthours s
JOIN
    (SELECT DISTINCT startdate FROM teamslots) d
LEFT JOIN
    teamslots t ON t.startdate = d.startdate AND
        s.thehour BETWEEN HOUR(t.starttime) AND HOUR(t.endtime)
LEFT JOIN
    teamslot_schedule ts ON ts.slotid = t.id
GROUP BY
    d.startdate,
    s.thehour
ORDER BY
    d.startdate + INTERVAL s.thehour HOUR;

祝你好运, 标记

1 个答案:

答案 0 :(得分:0)

使用MySQL CURDATE()函数并为您的班次减去适当的间隔。