2013-01-23 13 views
5

Szukam zapytania, aby uzyskać najbliższą wartość do średniej wszystkich wartości. na przykład, Mam w kolumnie A wartości - 1, 2, 8 Średnia to 3,667. Tak więc chcę, aby zapytanie zwróciło 2, ponieważ jest najbliższe średniej wartości.najbliższa wartości średniej SQL

+0

Właściwie w moim DB mam 2 columns- szerokość i wysokość. Obliczam rozmiar kwadratu, a nie obliczam średni kwadrat. i chcę uzyskać szerokość i wysokość, których wielkość kwadratu jest najbardziej zbliżona do tej średniej. Jak mogę to zrobić? –

+3

Dlaczego tak wiele przegranych? To pytanie nie pokazuje absolutnie żadnego wysiłku. – Kermit

+0

jakiego typu SQL? – dnagirl

Odpowiedz

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 Ładnie wykonane. – Art

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

-1: Rozważmy przypadek z liczbami (1, 5, 8). Średnia = 4,67 i najbliższa liczba to 5, a nie 1. – SparKot

+0

@SparKot: Jeśli OP pokazałby ten przykład, mógłbym wymyślić różnicę. odpowiedź. – shahkalpesh

Powiązane problemy