[mysql] calcolo varianza

Ciao ragazzi, per calcolare la varianza utilizzo il seguente codice:

SELECT x.id, x.val from data x, data y
      GROUP BY x.id, x.val
      HAVING SUM(SIGN(1-SIGN(IF(y.val-x.val=0 AND x.id != y.id, SIGN(x.id-y.id), y.val-x.val)))) IN (ROUND((COUNT(*))/2), ROUND((COUNT(*)+1)/2))

Funziona nel caso i valori di "val" siano distinti.

Però, nel caso in cui i valori di "val" coincidono il funzionamento non è corretto. Mi spiego meglio: se ho

id val

1 2

2 1

3 3

4 21

5 4

6 5

7 7

8 5

anzichè restituirmi:

id val

5 4

6 5

mi restituisce:

id val

5 4

6 5

8 5

E nel caso:

id val

1 2

2 1

3 3

4 21

5 5

6 5

7 7

anzichè restituirmi:

id val

5 5

mi restituisce

id val

5 5

6 5

Qualcuno può aiutarmi a risolvere questo problema? Grazie

inviato 6 anni fa
lilux
X 0 X

Il mio consiglio è di non fare queste cose in mysql, ma farle in php.

risposto 6 anni fa
Massimiliano Arione
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda