我有一个测试数据库,每个测试都有一个StartTime和(对于那些已完成的)EndTime值。 我想创建一个查询,显示每小时运行的测试数。
即。在任何给定时间测试具有startTime但不是EndTime。
我制定了分组内容 - 感谢this answer中的@p.cambell到问题SQL Server Group by Count of DateTime Per Hour?
答案 0 :(得分:1)
您可以使用条件聚合执行此操作:
SELECT CAST(StartDate as date) AS ForDate,
DATEPART(hour, StartDate) AS OnHour,
COUNT(*) AS TotalStarts,
SUM(CASE WHEN CAST(StartDate as date) <> CAST(EndDate as date) or
DATEPART(hour, StartDate) <> DATEPART(hour, EndDate)
THEN 1
ELSE 0
END) as StartedButNotEndedInHour
FROM #Events
GROUP BY CAST(StartDate as date),
DATEPART(hour,StartDate)