嗨我正在尝试计算结果集的平均值,但我无法这样做,选择count(*)的查询返回1月1日到31日之间每天的呼叫计数,因此返回了近20行.如何计算结果的平均值,然后将值分配给变量,如SET @abc =(下面的查询).我正在使用sql server 2005.
SELECT avg(Calls) AS average
FROM
(
SELECT COUNT(*) Calls
FROM abc
WHERE CallDate BETWEEN '20120101' AND '20120131'
AND datepart(Hh,TranscribeDateTime) = '07'
AND datepart(Mi,TranscribeDateTime) BETWEEN '00' AND '59'
AND AppID = 123 AND Status ='T'
GROUP BY calldate
)
Run Code Online (Sandbox Code Playgroud)
如果我的方法有误,请提出一个.谢谢
看起来你只是缺少派生表(SQL Server中需要)和赋值语句的表别名(AS average如果将列分配给变量,也不能对列进行别名)
DECLARE @ABC INT;
SELECT @ABC = AVG(Calls)
FROM
(
SELECT COUNT(*) Calls
FROM abc
WHERE CallDate BETWEEN '20120101' AND '20120131'
AND datepart(Hh,TranscribeDateTime) = '07'
AND datepart(Mi,TranscribeDateTime) BETWEEN '00' AND '59'
AND AppID = 123 AND Status ='T'
GROUP BY calldate
) T /* <-- Alias here */
Run Code Online (Sandbox Code Playgroud)