Ciao ragazzi, vorrei calcolare la mediana di un tot numero di valori nome_campo alla volta.
Supponendo di volerla calcolare per 5 valori, ho provato con il seguente codice:


codice:
set @attr1 = -1,@num = 1;
SELECT id, avg(nome_campo) as mediana FROM
(select *,@num := if(@attr1=utente, @num+1, 1) as riga, @attr1 := attr1 as i 
from
( SELECT x.id, x.nome_campo 
from nome_tabella x, nome_tabella y
GROUP BY x.id, x.nome_campo
HAVING SUM(SIGN(1-SIGN(IF(y.nome_campo-x.nome_campo=0 AND x.id != y.id, SIGN(x.id-y.id), y.nome_campo-x.nome_campo)))) IN (ROUND((COUNT(*))/2), ROUND((COUNT(*)+1)/2))
) t
) t2
group by attr1, ceil (riga/5)
Tale codice non mi dà errore, però non mi restituisce il risultato sperato ma solo la mediana di tutti i valori assunti da nome_campo nella tabella ( la suddivisione in 5 righe non viene proprio considerata). Dove sbaglio?