“AVG”上的SQL命令错误

时间:2013-12-23 20:14:40

标签: sql

尝试获取平均值,但不断收到错误消息:

  

操作数数据类型varchar对于avg运算符无效。

这是SQL:

select 
        COUNT(Amount)AS "TOTAL Sales Daily",
        MIN(Amount) AS "MIN Sales Daily", 
        MAX(Amount) AS "MAX Sales Daily",
        CAST(AVG(Amount)AS INTEGER) AS "AVG Salses Daily"          
from CMP_SalesDaily_Data;

3 个答案:

答案 0 :(得分:2)

CAST位置错误。

select 
        COUNT(Amount)AS "TOTAL Sales Daily",
        MIN(Amount) AS "MIN Sales Daily", 
        MAX(Amount) AS "MAX Sales Daily",
        AVG(CAST(Amount AS INTEGER)) AS "AVG Salses Daily"          
from CMP_SalesDaily_Data;

有效处理此问题的一种方法是,如果您无法控制AMOUNT的数据类型,可能会在以下路径中执行此操作:

select 
        COUNT(Amount)AS "TOTAL Sales Daily",
        MIN(Amount) AS "MIN Sales Daily", 
        MAX(Amount) AS "MAX Sales Daily",
        AVG(Amount) AS "AVG Salses Daily"          
from (
  select cast(amount as integer) as amount from CMP_SalesDaily_Data
);

但是,请记住验证CAST是否以某种方式对数据造成损害(例如,在需要干净处理的数据中没有“N / A”之类的内容)。

答案 1 :(得分:0)

您的Amount字段可能属于VARCHAR类型。在将其传递给CAST之前,请先尝试CONVERTAVG

(假设这是SQL-Server)

答案 2 :(得分:0)

试试这个:

AVG(cast(Amount AS INTEGER)) AS "AVG Salses Daily"