按星期几每小时平均计数

时间:2020-05-23 01:30:15

标签: sql sql-server tsql date group-by

这个question帮助我进入了那里:

SELECT 
    [Day], 
    [Hour], 
    [DayN], 
    AVG(Totals) AS [Avg]
FROM
(
    SELECT 
        w = DATEDIFF(WEEK, 0, ForDateTime),
        [Day]  = DATENAME(WEEKDAY, ForDateTime),
        [DayN] = DATEPART(WEEKDAY, ForDateTime),
        [Hour] = DATEPART(HOUR,    ForDateTime),
        Totals = COUNT(*)
    FROM 
        #Visit
    GROUP BY 
        DATEDIFF(WEEK, 0, ForDateTime),
        DATENAME(WEEKDAY, ForDateTime),
        DATEPART(WEEKDAY, ForDateTime),
        DATEPART(HOUR,    ForDateTime)
) AS q
GROUP BY 
    [Day], 
    [Hour], 
    [DayN]
ORDER BY 
    DayN; 

如何更改此值,而不是按小时显示平均值,例如9、10、11、12等。它一直显示到09:30-10:30,10:30-11:30,11:30-12:30,12:30-13:30一直到23:30。

1 个答案:

答案 0 :(得分:2)

一种简单的方法是将ForDateTime偏移30分钟。基本上,您只需要在查询中将ForDateTime的每出现替换为dateadd(minute, 30, ForDateTime)

在结果集中,Hour 9为您提供了从8:30到9:30的时隙,依此类推。