gpt4 book ai didi

mysql - 为总和(工作时间)< x 的用户选择最大日期

转载 作者:行者123 更新时间:2023-11-29 12:17:19 24 4
gpt4 key购买 nike

需要查询方面的帮助 - 我同时使用 SQL Server 和 MySQL。

我有一个用户工作时间表,如下所示:

USER  WORKTIME DATE
user1 08:00:00 2015-03-01
user1 08:00:00 2015-03-02
user1 08:00:00 2015-03-03
user2 08:30:00 2015-03-11
user2 10:00:00 2015-03-13
user3 05:00:00 2015-03-11
user3 05:00:00 2015-03-12
user3 05:00:00 2015-03-14

我需要的是每个用户的工作时间总和小于或等于 x 时的最后日期 - 对于这个例子,我们假设它是 18 - 加上截至该日期的工作时间总和 - 所以我的结果应该是:

USER  WORKTIME DATE
user1 16:00:00 2015-03-02
user2 08:30:00 2015-03-11
user3 15:00:00 2015-03-14

当使用这样的简单查询时:

select user, 
sum(worktime),
max(date)
from worktime
group by user
having sum(worktime) <= 18

我只得到总小时数 <= 18 的用户,在本例中是 user3。

我知道如何使用 2 个单独的查询和一些 Excel 函数来完成此操作,但想知道是否可以在单个语句中完成此操作。

最佳答案

如果您两个数据库都需要这个,那么我建议使用相关子查询来获取累积时间量。然后你就可以得到你想要的值:

select user, max(date)
from (select wk.*,
(select sum(wk2.worktime)
from worktime wk2
where wk2.user = wk.user and
wk2.date <= wk.date
) cume_worktime
from worktime wk
) t
where cume_worktime <= 18
group by user;

这是 ANSI 标准 SQL,应该适用于两个数据库。

关于mysql - 为总和(工作时间)< x 的用户选择最大日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29593701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com