【发布时间】:2018-12-31 07:59:48
【问题描述】:
我正在尝试计算每月的平均记录数,但下面的示例代码无法正常工作。
谁能看到我做错了什么?我检查了其他一些问题,例如SQL Server - monthly avg of count,但它对我不起作用。
Create Table #TestData
(
DateCreated datetime,
Number int
)
Insert into #TestData
(
DateCreated,
Number
)
SELECT
'26 Nov 2018',
'10'
UNION
SELECT
'26 Nov 2018',
'11'
UNION
SELECT
'27 Nov 2018',
'10'
UNION
SELECT
'28 Nov 2018',
'11'
UNION
SELECT
'29 Nov 2018',
'20'
UNION
SELECT
'30 Nov 2018',
'35'
UNION
SELECT
'01 Dec 2018',
'35'
UNION
SELECT
'02 Dec 2018',
'40'
UNION
SELECT
'02 Dec 2018',
'75'
select
month,
year,
cnt,
avg(cnt) as avg
from
(
select
MONTH(DateCreated) AS [month],
YEAR(DateCreated) AS [year],
count(*) as cnt
from
#TestData
group by
MONTH(DateCreated),
YEAR(DateCreated)
) agg
group by
cnt,
month,
year
drop table #TestData
【问题讨论】:
-
....
GROUP BY cnt, month year,但是你之前的级别有GROUP BY month, year,也就是说你只能有一个(month, year),元组。您是否添加了额外的级别或其他内容? -
感谢您的回复,如果我没有那两组group bys,我不能使用count(*) 或avg(cnt)
-
外部
group by(和select)中的cnt是您做错了。从外部查询中删除它,你会得到你想要的结果。 -
@ZoharPeled ,您介意将其发布为答案吗?我已经从外部查询中删除了 cnt 并且没有区别,仍然没有得到正确的平均值。
-
所以你想要每个月每天的平均记录数?
标签: sql-server tsql