从SQL Server中的子查询值或其他聚合函数获取平均值

sim*_*mon 24 sql t-sql sql-server

我有SQL语句(SQL Server)


SELECT 
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY 
dateadd(dd,0, datediff(dd,0,CreationDate))

产生输出

pageCount
27
19
59

现在我想用SQL获得所有这些数字的平均值.显然嵌套的聚合函数就像

(AVG(COUNT(PAGECOUNT)))

是不允许的,并使用子查询


SELECT AVG(pageCount) FROM
(
SELECT 
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY 
dateadd(dd,0, datediff(dd,0,CreationDate))
)

得到我只是一个错误消息')'附近的语法不正确.

如何获得pageCount行的平均值?

Rob*_*Day 37

我无法看到您的整个查询,因为它似乎没有正确发布.

但是,我相信您的问题纯粹是缺少派生表/嵌套子查询的名称.

给它一个别名,例如本例中的MyTable

SELECT
    AVG(pageCount)
FROM
(
    SELECT 
        COUNT(ActionName) AS pageCount
    FROM
        tbl_22_Benchmark
) MyTable
Run Code Online (Sandbox Code Playgroud)


eKe*_*ek0 6

你的子查询应该有一个别名,就像这样

SELECT AVG(pageCount) FROM
(
SELECT 
COUNT(ActionName) AS pageCount
FROM tbl_22_Benchmark
WHERE DATEPART(dw,CreationDate)>1 AND DATEPART(dw,CreationDate)<7
GROUP BY 
dateadd(dd,0, datediff(dd,0,CreationDate))
) AS t
Run Code Online (Sandbox Code Playgroud)