Newsgroup: it.comp.appl.access
Titolo: dalla media escludere il valore massimo

ciao a tutti ricorro al vostro aiuto, perchè sono letteralmente in panne.
Sto facendo delle medie di tipo statistico, e mi è stato chiesto ( io non
me lo sarei mai inventato) di escludere dal calcolo della media il valore
massimo del campo che vado a mediare.
p.e. 
SELECT Avg(Base_Dati.ammontare_remunerazione) AS MediaRemunerazione,
Count(Base_Dati.Banche) AS [Conteggio Rercord]
FROM Base_Dati
WHERE (((Base_Dati.Banche)=True));
Mediaremunerazione non deve contenere il valore più alto presente nel
recordset.
MC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 recordset.
Se ti capisco bene:
SELECT Avg(Base_Dati.ammontare_remunerazione) AS MediaRemunerazione
Count(Base_Dati.Banche) AS [Conteggio Rercord]
FROM Base_Dati
WHERE Base_Dati.Banche=True And Base_Dati.ammontare_remunerazione
<(SELECT Max(Base_Dati.ammontare_remunerazione) FROM Base_Dati
WHERE Base_Dati.Banche=True);
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 + iscriviti alla CISA2, la seconda
Conferenza Italiana per Sviluppatori di Access, Paola, 17+18/6/2006 

 WHERE Base_Dati.Banche=True);
Io avevo fatto una cosa del genere:
SELECT Avg(Base_Dati.ammontare_remunerazione) AS MediaCarica,
Count(Base_Dati.Banche) AS [Conteggio Rercord]
FROM Base_Dati
WHERE (((Base_Dati.Banche)=True) AND
((Base_Dati.ammontare_remunerazione)<DMax("ammontare_remunerazione","base_dati","[campione]=true")));
ma tu usi una subquery.
Il risultato non cambia ... quale č meglio?
Sicuramente pian piano i criteri di selezione aumenteranno, e quindi
suppongo sia piů agevole creare una vera e propria subquery cosi da
gestirla meglio.
che dici?


 che dici?
Una subquery è lo standard SQL. Ma se sei sicuro che l'applicazione
rimane sempre in JET/ACE certo puoi usare DMax. Il numero dei
criteri non fa una differenza. Se hai molti record lascia decidere la
prestazione con delle prove. Tutti e due metodi non vengono da
Maranello.
-- 
cu


 Maranello.
eheh ... se il "nostro" shumi, arriva sempre secondo però ...


 Base_Dati.Banche=True <> [campione]=true


Ciao karl ritorno sul problema della media. 
Se io chiedo di escludere dalla media il valore massimo e il valore
minimo, su un recordset p.e. di 100, dovrei avere 98 record interessati
alla media: 
il numero dei record meno 2, quello minimo e quello massimo.
Tutto ciò è vero solo se il valore massimo o il minimo non siano duplicati.
A me purtroppo capita che il valore minimo sia uguale a 0 per più records.
A questo punto la media mi sballa. Se per esempio ho 5 record pari a 0, 
la media non è più 98 record diviso il valore da mediare, ma i 95 record
restanti e quindi un valore più alto. 
Le strade sono due o non uso la funzione media ma la calcolo io: record
interessati/somma del valore, oppure devo modificare la subquery ... ma
qui casca l'asino, non so come fare.


 ...
Se un campo è chiave primaria nella tabella puoi usare p.e.
SELECT Avg(Base_Dati.ammontare_remunerazione) AS MediaRemunerazione
Count(Base_Dati.Banche) AS [Conteggio Rercord]
WHERE Banche=True And MiaChiave Not In
 (SELECT First(MiaChiave)
  FROM Base_Dati
  GROUP BY ammontare_remunerazione
  HAVING ammontare_remunerazione In
   (SELECT Min(ammontare_remunerazione) FROM Base_Dati)
   OR ammontare_remunerazione In
   (SELECT Max(ammontare_remunerazione) FROM Base_Dati));
-- 
HTH
