2013-01-23 22 views
5

Sto cercando una query per ottenere il valore più vicino alla media di tutti i valori. ad esempio, Ho nella colonna A i valori - 1, 2, 8 La media è 3.667. Quindi voglio che la query restituisca 2 poiché è il più vicino al valore medio.più vicino al valore medio SQL

+0

In realtà nel mio DB ho 2 Colonne-larghezza e l'altezza. Sto calcolando la dimensione quadrata, rispetto al calcolo della dimensione quadrata media. e voglio ottenere la larghezza e l'altezza, le cui dimensioni quadrate sono le più vicine a questa media. Come posso farlo? –

+3

Perché così tanti voti? Questa domanda mostra assolutamente nessuno sforzo. – Kermit

+0

quale tipo di SQL? – dnagirl

risposta

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 Ben fatto. – Art

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

-1: si consideri il caso con i numeri (1, 5, 8). Media = 4,67 e il numero più vicino è 5, non 1. – SparKot

+0

@SparKot: Se OP avesse mostrato questo esempio, avrei potuto inventare un diff. risposta. – shahkalpesh