请问我们怎么做:
1)从当前时间24小时开始每小时生成24行
2)在过去24小时内将另一个表中的数据汇总到这24个数据点中。
我已经看到了建议0-23号码表的解决方案,但是如果我们需要从现在开始,然后24小时跑回Get every hour for a time range
,这些可能会很困难。 例如[早上5点,凌晨4点,凌晨3点... 12点,上午11点,上午7点至凌晨6点)来源表:
select d,h,count(1)cnt from msgs
where dt>= DateAdd(hh, -24, sysdatetime())
group by d,h order by 1 desc,2 desc
样本数据
d h cnt
2015-06-05 16 11
2015-06-05 13 44
2015-06-05 12 16
2015-06-05 11 31
2015-06-05 10 10
2015-06-05 9 12
2015-06-05 8 1
2015-06-04 21 1
2015-06-04 20 2
2015-06-04 18 5
2015-06-04 16 2
我错过了几个小时,我需要一个用0
填写缺失时间的查询答案 0 :(得分:2)
作为替代解决方案,您可以使用此查询提供所有24小时范围。然后简单地将这些值与原始查询进行聚合和求和,以仅返回24行。
;WITH hrs AS
(
SELECT h = 1
UNION ALL
SELECT h + 1
FROM hrs
WHERE h + 1 <= 24
)
SELECT
d = left(convert(varchar(50),DateAdd(hour, -1 * h, getdate()), 21),10),
h = DatePart(hour, DateAdd(hour, -1 * h, getdate())),
cnt = 0
FROM hrs
答案 1 :(得分:1)
您可以尝试加入此功能:
git commit -regex ".*my_file.*"`