2013-01-23 263 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