【发布时间】:2021-03-25 07:22:06
【问题描述】:
我需要找到名为“Edges”的列的平均值。 里面的值的种类如下:(注意:还有一堆NULL)
EDGES
1. 1,362,797
2. 204,919
3. 26,138 948,570
4. 111,471 5,858
我已尝试运行查询以显示非空值:
SELECT AVG(Edges) AS test from
(SELECT [Edges] as Edges FROM dbo.tracker
WHERE [Edges] like '%[^0-9]%') as a
我得到的错误是:“Operand data type nvarchar is invalid for avg operator.”
平均该列的查询是什么?
【问题讨论】:
-
看起来
Edges列的数据类型是字符串而不是数字。正如错误消息所述,“您不能将 nvarchar 用于 avg” -
您可以计算数字的平均值(例如,10 和 20 的平均值是 15),但不能计算字符串的平均值(例如,'dog' 和 'cat' 的平均值是多少?)。虽然您的字符串
'1,362,797'可以转换为数字 1362797,但您必须告诉 DBMS 这样做。而'26,138 948,570'不是数字,因此甚至无法转换。如果这应该是 260 亿,那么必须有一个逗号,你有一个空格。 -
@ThorstenKettner 是的。 StackOverflow 编辑了我的帖子。所有值都只是“26,138”,然后下一行是“948,570”。我尝试使用 CAST 并将它们转换为 INT,但它不起作用。我需要该列的平均值。帮忙?