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:
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?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)

Rispondi quotando