查找返回多行的count(*)的平均值

2 sql sql-server-2005

嗨我正在尝试计算结果集的平均值,但我无法这样做,选择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)

如果我的方法有误,请提出一个.谢谢

Mar*_*ith 6

看起来你只是缺少派生表(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)

  • 好抓!单个字符修复. (2认同)