尝试获取平均值,但不断收到错误消息:
操作数数据类型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;
答案 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
之前,请先尝试CONVERT
或AVG
。
(假设这是SQL-Server)
答案 2 :(得分:0)
试试这个:
AVG(cast(Amount AS INTEGER)) AS "AVG Salses Daily"