按查询分区和分组
Partition and group by query
我有 table 包含以下列:
1.ClockifyId,
2.每个任务的StartTime EndTime
3.日期。
4.持续时间
图片附在下方
我的目标是编写查询来计算每个日期的每个用户(即 ClockifyId)的总持续时间。
由于一个用户可以在一天内完成多个任务,我想总结所有这些任务的持续时间。简而言之,
我想要每个日期的每个用户(即 clockifyid)的总任务持续时间。
enter image description here
这里缺少一些细节,但这应该让你足够接近。
您需要做的第一件事是将 StartTime 和 EndTime 转换为日期时间字段(如果尚未转换)。对它们执行 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。如果这些字段有空值,这将引发一些错误。
我有 table 包含以下列: 1.ClockifyId, 2.每个任务的StartTime EndTime 3.日期。 4.持续时间
图片附在下方
我的目标是编写查询来计算每个日期的每个用户(即 ClockifyId)的总持续时间。
由于一个用户可以在一天内完成多个任务,我想总结所有这些任务的持续时间。简而言之,
我想要每个日期的每个用户(即 clockifyid)的总任务持续时间。
enter image description here
这里缺少一些细节,但这应该让你足够接近。
您需要做的第一件事是将 StartTime 和 EndTime 转换为日期时间字段(如果尚未转换)。对它们执行 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。如果这些字段有空值,这将引发一些错误。