2013-01-23 197 views
5

我正在寻找一个查询来获取最接近的值存在的所有值的平均值。 例如, 我在A列中的值 - 1,2,8 平均值是3.667。所以我想查询返回2,因为它是最接近平均值。距离平均值最近SQL

+0

其实在我的数据库我有2个columns-宽度和高度。我正在计算平方尺寸,而不是计算平均平方尺寸。我想得到宽度和高度,它们的平方尺寸最接近这个平均值。 我该怎么做? –

+3

为什么这么多upvotes?这个问题显示了绝对没有努力。 – Kermit

+0

哪种类型的SQL? – dnagirl

回答

8
SELECT TOP 1 myTable.* 
FROM myTable 
CROSS JOIN (SELECT AVG(A) AS averageA FROM myTable) AS averageA 
ORDER BY ABS(averageA.averageA - myTable.A) 

SQL Fiddle

2
SELECT number, ABS(number - (SELECT AVG(number) FROM numberTable)) AS deviation 
FROM numberTable 
ORDER BY deviation ASC 
LIMIT 1; 
+0

+1很好。 – Art

0
SELECT MAX(A) 
FROM myTable 
WHERE A < (SELECT AVG(A) AS averageA FROM myTable) 
+0

-1:考虑数字(1,5,8)的情况。平均= 4.67,最接近的数字是5,而不是1. – SparKot

+0

@SparKot:如果OP会显示这个例子,我可以想出一个差异。回答。 – shahkalpesh