在 SQL Server 2016 中为每个 GROUP BY 列获取 MAX() 减去 MIN()?

Get MAX() minus MIN() for each GROUP BY column in SQL Server 2016?

不知道如何表达,但本质上,我想编写一个查询,输出每个 "LocationDescription" 的 MAX(StatusDateTime) 减去 MIN(StatusDateTime) 的结果,以及如果这甚至可以通过一个查询实现,那么天上掉馅饼的输出还将包括给定 LocationDescription 的总行数。

示例数据:

LocationDescription StatusDateTime
Site 1              2/6/20 10:35:34.027
Site 1              2/6/20 10:35:33.823
Site 1              2/6/20 10:35:33.183
Site 1              2/6/20 10:35:32.387
Site 2              2/6/20 10:35:53.500
Site 2              2/6/20 10:33:06.917
Site 2              2/6/20 10:33:06.300
Site 2              2/6/20 10:34:44.083
Site 2              2/6/20 10:34:52.410
Site 2              2/6/20 10:34:40.503
Site 2              2/6/20 10:34:49.710
Site 2              2/6/20 10:35:53.753
Site 3              2/6/20 10:32:38.253
Site 3              2/6/20 10:36:08.987
Site 3              2/6/20 10:36:08.013
Site 3              2/6/20 10:36:06.060
Site 3              2/6/20 10:32:45.890

理想输出(持续时间根据上面的样本数据在下面大致确定):

LocationDescription DurationDifference TotalRecords
Site 1              00:00:02.000       4
Site 2              00:02:47.000       8
Site 3              00:03:21.000       5

1 个查询是否可行?

编辑:我的最终目标是尝试说 "X number of records per second for Site 1"、"X number of records per second for Site 2" 等。这是一个基于性能的指标,我计划在仪表板上使用它来显示事情有多快正在接受健康检查。

尝试按位置描述进行聚合,然后使用 DATEDIFF 以秒为单位找出最小和最大状态时间之间的差异。

SELECT
    LocationDescription,
    DATEDIFF(second, MAX(StatusDateTime), MIN(StatusDateTime)) AS DurationDifference,
    COUNT(*) AS TotalRecords
FROM yourTable
GROUP BY
    LocationDescription;

这符合您的要求。

SELECT 
  LocationDescription,
  DATEDIFF(seconds,MAX(StatusDateTime), MIN(StatusDateTime)) AS DurationDifference,
  COUNT(*) AS TotalRecords
FROM MyTable
GROUP BY LocationDescription