-1

我有包含以下列的表:1. ClockifyId,2. 每个任务的 StartTime EndTime 3. 日期。4. 持续时间

图片附在下面我的目标是编写查询来计算每个日期的每个用户(即 ClockifyId)的总持续时间。由于一个用户可以在一天内完成多项任务,我想总结所有这些任务的持续时间。简而言之,我想要每个日期的每个用户(即clockifyid)的总任务持续时间。
在此处输入图像描述

4

1 回答 1

1

这里缺少一些细节,但这应该让你足够接近。

您需要做的第一件事是将 StartTime 和 EndTime 转换为 datetime 字段(如果它们还没有的话)。对它们进行 DATEDIFF 可以让您找出每条记录的分钟差异。您可以根据需要更改计量单位。

一旦你这样做了,你就可以使用 SUM() 这是一个聚合函数。这使得必须使用 GROUP BY。然后,您按哪个字段分组,在本例中为 ClockifyId 和 StartTime 作为日期。您必须将其作为没有日期时间的日期来执行,否则您将在一天内为单个 Clockify 记录返回多行。

SELECT 
      ClockifyId
    , SUM(DATEDIFF(mi, CAST(StartTime AS datetime), CAST(EndTime AS datetime))) AS DurationInMinutes
    , CAST(StartTime AS date)
FROM TableName
GROUP BY
      ClockifyId
    , CAST(StartTime AS date)

值得注意的是,这假设始终存在有效的 StartTime 和 EndTime。如果这些字段为空,这将引发一些错误。

于 2021-01-12T21:48:05.590 回答