CISA FotoGallery

Statistiche

Tot. visite contenuti : 928278
Home Articoli tecnici Query e viste Calcolare una media escludendo Min e Max

Calcolare una media escludendo Min e Max

 Ipotizziamo di avere un elenco di valori e di volerne fare una media escludendo solo il valore più alto e quello più basso.
Creando una subquery che va a prendere il Dmin ed il Dmax ci esponiamo all'errore di escludere tutti i valori min o max che sono uguali. Un esempio ci chiarirà le idee. Noi abbiamo i seguenti valori
1. Paperino 0
2. Pluto 0
3. Pippo 1
4. Paperoga 3
5. Topolino 4
6. Gastone 10
Se usassimo Dmin e Dmax avremmo il valore corretto per il Max ma escluderemmo i due record con valore 0 e questo è un errore

Per risolvere il problema ci vengono incontro gli Join e la clausola TOP1

SELECT
Avg(Importo) as MediaImporto,
Count(Importo) as ConteggioImporto
FROM
(MiaTabella as T1 LEFT JOIN
[SELECT TOP1
id
FROM Miatabella
ORDER BY
Importo, id].
AS T2 ON T1.id=T2.id)
LEFT JOIN
[Slect TOP 1
FROM Miatabella
ORDER BY Importo DESC, id].
As T3 on T1.id = t3.id
WHERE (((T2.id) is null)
AND ((T3.id) is Null));