【发布时间】:2017-03-24 14:28:50
【问题描述】:
使用 SQL Server 2014。我有一个带有时间戳的记录列表,我想计算每小时有多少条记录,然后计算每天记录计数超过给定数字的小时数,比如 20。
这是我目前所拥有的:
select count(distinct datepart(hour, convert(datetime, OrderStateDate))) Count_HoursOver,
datepart(YEAR, convert(datetime, OrderStateDate)) Date_YEAR,
datepart(month, convert(datetime, OrderStateDate)) Date_MONTH,
datepart(day, convert(datetime, OrderStateDate)) Date_DAY
from Reporting.dbo.Orders
group by datepart(YEAR, convert(datetime, OrderStateDate)),
datepart(month, convert(datetime, OrderStateDate)),
datepart(day, convert(datetime, OrderStateDate))
having count(idscript) >= 20
结果不正确,我无法理解返回的内容和原因。我是否错误地使用了 HAVING?任何建议将不胜感激!
【问题讨论】:
-
难道你不应该按小时分组,以便计数,而不是计算有多少小时?
-
我没有按小时分组,因为我想知道多少小时符合我的标准。那么对于每一天,总计数超过限制的小时数是多少?如果我按小时分组,我会得到一个已经结束的小时列表,但不是按天计算的总数。
标签: sql sql-server