sql命令,用于查找过去6个月内用户访问网站的平均次数
我有一个表,有两列,日期和访问次数 我需要计算过去6个月每月访问的平均计数差异sql命令,用于查找过去6个月内用户访问网站的平均次数,sql,sql-server,Sql,Sql Server,我有一个表,有两列,日期和访问次数 我需要计算过去6个月每月访问的平均计数差异 Date Number_of_Visits 2018-04-06 5 2018-02-06 6 2017-04-10 3 2017-02-10 9 SQL应该输出 Avg_count difference visits past 6 months 5-3=2 6-9=-3 -3+2/2=-0.5 sql查询输出应为-0.5 如下所示创建sql With cte as ( SELE
Date Number_of_Visits
2018-04-06 5
2018-02-06 6
2017-04-10 3
2017-02-10 9
SQL应该输出
Avg_count difference visits past 6 months
5-3=2
6-9=-3
-3+2/2=-0.5
sql查询输出应为-0.5
如下所示创建sql
With cte as (
SELECT Year(v1.date) as Year, Month(v1.date) as Month, sum(v1.visits) as SumCount
FROM visits_table v1
group by Year(v1.date), Month(v1.date)
)
你想要的是多年来同一个月不同月份的平均值?同比比较 这将为您提供所需的结果-0.5
为什么是5-3和6-9?我相信上面的查询计算的是所有年份同一月份计数的平均差异。谢谢。如何计算过去6个月当月计数的平均差异,我是否需要添加条件是。添加WHERE子句仅返回所需结果i在下面运行查询显示平均值,但如果过去6个月与上一年重叠,即当前日期为2018/03,如果我每月运行查询以查找过去6个月的平均计数差异,我认为我需要修改WHERE条件,有何建议?cte作为选择年份v1.date作为年份,Monthv1.date为月份,sumv1.Visitions为SumCount从[Visitions_table]v1组按年份v1.date,Monthv1.date从SELECT*中选择AVG diff*1.0,diff=SumCount—从cte d开始按月份顺序按年份在分区上滞后SumCount,其中d.Year=Yeargetdate,d.Month=Monthgetdate-6
; With
cte as
(
SELECT Year(v1.date) as Year, Month(v1.date) as Month, sum(v1.visits) as SumCount
FROM visits_table v1
WHERE v1.date >= DATEADD(MONTH, -6, GETDATE()) -- Add here
group by Year(v1.date), Month(v1.date)
)
SELECT AVG (diff * 1.0)
FROM
(
SELECT *, diff = SumCount
- LAG (SumCount) OVER (PARTITION BY Month
ORDER BY Year)
FROM cte
) d