Usare Somma, Conteggio e Media nelle query Access permette di trasformare migliaia di righe di dettaglio in indicatori comprensibili: totale vendite, numero di ordini, quantità media, importo medio per cliente, ore lavorate, ticket per tecnico e molti altri KPI. Le tre funzioni sembrano semplici, ma per ottenere risultati corretti devi capire bene il livello di raggruppamento, i Null, i join e la differenza tra contare righe e contare entità reali.
Questa guida mostra come usare Sum, Count e Avg tramite la riga Totale e in SQL, come combinarle con Raggruppa per, criteri e parametri, come evitare somme gonfiate da join uno-a-molti, come trattare i valori Null e come preparare query affidabili per report e dashboard. Le procedure valgono per Access desktop in Microsoft 365 e Access 2024 su Windows. Access Runtime può eseguire query già progettate ma non sostituisce la versione completa per lo sviluppo.
Prima di iniziare: capire cosa rappresenta una riga
La domanda più importante non è quale funzione usare, ma cosa rappresenta ogni riga della query di partenza. Se una riga rappresenta un ordine, Count può contare ordini. Se una riga rappresenta una riga prodotto dell’ordine, Count conta righe prodotto, non ordini. Se lo stesso TotaleOrdine è ripetuto su ogni riga dettaglio e lo sommi, il totale viene moltiplicato.
Per questo conviene spesso creare una query di dettaglio pulita e poi una query Totali separata. Consulta come creare una query Totali in Access e, per i calcoli di riga, come creare campi calcolati. Tutte le guide sono nella categoria Guide Access.
Come attivare la riga Totale
Crea una query di selezione, aggiungi i campi e fai clic su Totali nella scheda Struttura. Compare una riga con Raggruppa per. Per ogni colonna puoi scegliere una funzione. La combinazione più semplice è Cliente con Raggruppa per e Importo con Somma.
Quando esegui la query, Access restituisce una riga per ogni combinazione dei campi di raggruppamento. Se raggruppi per Cliente e Anno, avrai una riga per cliente e anno. Se aggiungi anche Mese, avrai una riga per cliente, anno e mese.
Somma: quando usarla
Somma è adatta a valori additivi: importi, quantità, ore, chilometri, pezzi, costi. Se la tabella Ordini contiene TotaleOrdine e ogni ordine compare una sola volta, puoi raggruppare per IDCliente e sommare TotaleOrdine.
In SQL: SELECT IDCliente, Sum(TotaleOrdine) AS TotaleVendite FROM Ordini GROUP BY IDCliente;. L’alias TotaleVendite rende chiaro il significato della colonna.
Somma di un campo calcolato
Se non memorizzi TotaleRiga, crea una query dettaglio con TotaleRiga: [Quantita]*[PrezzoUnitario]. Poi crea una seconda query che raggruppa e somma TotaleRiga. Questa struttura evita formule troppo lunghe e facilita il controllo delle singole righe.
Conteggio: cosa conta davvero
Count conta occorrenze. Ma devi sapere quale colonna stai contando e qual è il livello della query. Se conti IDOrdine in una query dove ogni ordine compare quattro volte per quattro prodotti, ottieni quattro, non uno. Per contare ordini distinti in Access spesso conviene creare prima una query che restituisce una sola riga per IDOrdine e poi contare quella.
Count su un campo ignora normalmente i Null. Questo è utile ma può sorprendere. Se vuoi contare quante righe hanno un valore specifico, scegli consapevolmente il campo. Una chiave primaria sempre valorizzata è spesso una scelta sicura per contare le righe.
Conteggio di clienti con ordini
Se vuoi sapere quanti clienti hanno effettuato almeno un ordine, non contare direttamente IDCliente nella tabella Ordini perché lo stesso cliente appare più volte. Crea una query con valori univoci di IDCliente o una query raggruppata per IDCliente e poi conta le righe risultanti in una seconda query.
Media: come interpretarla
Avg calcola la media aritmetica dei valori non Null. Puoi usarla per prezzo medio, importo medio ordine, durata media ticket o punteggio medio. Una media senza conteggio può però essere fuorviante: 100 euro di media su due ordini e 100 euro di media su duemila ordini hanno significati diversi. In molti report è utile mostrare insieme Avg e Count.
Media ponderata
Avg non calcola automaticamente una media ponderata. Se vuoi il prezzo medio ponderato per quantità, devi calcolare il valore totale e dividerlo per la quantità totale: somma di Quantita per Prezzo divisa per somma di Quantita. Non usare la semplice media dei prezzi se i volumi sono diversi.
Controlla sempre il denominatore e gestisci il caso quantità totale uguale a zero.
Null e Somma
Sum ignora i Null, ma un’espressione di riga che contiene Null può diventare Null prima dell’aggregazione. Se Sconto è opzionale, [Quantita]*[Prezzo]*(1-[Sconto]) restituisce Null quando Sconto è Null. Se il requisito considera sconto mancante uguale a zero, usa Nz nel calcolo di riga.
Null e Media
Avg ignora i Null, quindi la media viene calcolata sui valori presenti. Questo è spesso corretto. Sostituire Null con zero cambierebbe il significato. In un sondaggio, una risposta mancante non equivale a voto zero. Decidi la semantica prima di usare Nz.
Null e Conteggio
Count di un campo considera solo i valori non Null. Questo può essere usato intenzionalmente per sapere quanti record hanno una certa informazione compilata. Per esempio Count di DataChiusura conta quanti ticket risultano chiusi se il campo è Null per quelli aperti.
Somma per cliente
Crea una query su Clienti e Ordini collegati tramite IDCliente. Aggiungi IDCliente o RagioneSociale con Raggruppa per e TotaleOrdine con Somma. Prima verifica che ogni ordine compaia una sola volta nella query.
Se aggiungi DettagliOrdine, il TotaleOrdine di testata può ripetersi. In quel caso calcola il totale dalle righe dettaglio oppure aggrega gli ordini prima di collegarli al dettaglio.
Conteggio ordini per cliente
Se la query parte direttamente da Ordini, raggruppa per IDCliente e usa Conteggio su IDOrdine. Se invece include DettagliOrdine, crea prima una query che restituisce un solo IDOrdine per ordine. Access non offre in tutte le situazioni una semplice sintassi grafica equivalente a Count Distinct di altri database, quindi il metodo a due query è spesso più chiaro.
Importo medio per cliente
Raggruppa per IDCliente e usa Media su TotaleOrdine, sempre a livello Ordini. Aggiungi Conteggio IDOrdine. Così puoi interpretare la media insieme al numero di osservazioni.
Somma per mese
Crea un campo Mese: Format([DataOrdine],'yyyy-mm'), raggruppa per Mese e somma TotaleOrdine. Se vuoi ordinamento cronologico robusto, puoi raggruppare separatamente per Year e Month e usare Format soltanto per la visualizzazione.
Conteggio per stato
Raggruppa per Stato e conta IDTicket, IDOrdine o altra chiave. Otterrai una riga per Aperto, Chiuso, In lavorazione e così via. Se lo stato può essere Null, decidi se vuoi una categoria Non specificato tramite Nz o se vuoi mantenerlo come gruppo separato.
Media per categoria
Collega Prodotti e Categorie, raggruppa per Categoria e usa Media su Prezzo. Controlla che il join sia uno-a-molti corretto. Se una categoria compare più volte a causa di altre tabelle aggiunte, la media può essere pesata involontariamente dal numero di righe correlate.
Filtrare prima dell’aggregazione
Se vuoi sommare solo vendite del 2026, aggiungi DataOrdine, imposta Totale su Where e inserisci un criterio. In SQL il filtro va nel WHERE prima di GROUP BY. Questo riduce il set prima dell’aggregazione.
Filtrare dopo l’aggregazione
Se vuoi mostrare solo clienti con Somma maggiore di 10.000, il criterio riguarda il risultato aggregato e corrisponde a HAVING. La distinzione è importante: WHERE decide quali righe partecipano al calcolo; HAVING decide quali gruppi mostrare dopo il calcolo.
Usare parametri
Puoi chiedere Data iniziale e Data finale e calcolare Somma, Conteggio e Media sul periodo selezionato. Dichiara i parametri come Data/Ora. Per un’applicazione usata frequentemente, raccogli i valori con una maschera.
Approfondisci le query parametro.
SQL con Sum, Count e Avg
Una query può essere SELECT IDCliente, Sum(TotaleOrdine) AS Totale, Count(IDOrdine) AS NumeroOrdini, Avg(TotaleOrdine) AS MediaOrdine FROM Ordini GROUP BY IDCliente;. Questo produce tre KPI per cliente in una sola esecuzione.
Somma e join molti-a-molti
Le relazioni molti-a-molti sono il punto più pericoloso. Se un prodotto appartiene a più categorie tramite una tabella ponte o se un ordine ha più tag, una query che aggiunge quelle tabelle può moltiplicare le righe. Prima di aggregare, verifica sempre il numero di record rispetto all’entità che vuoi misurare.
Prestazioni
Gli aggregati richiedono lettura e raggruppamento. Filtra prima possibile, indicizza campi usati nei criteri e nei join e non aggiungere colonne di raggruppamento inutili. Su grandi database collegati a SQL Server, una vista o query pass-through può eseguire l’aggregazione lato server.
Query non aggiornabili
Una riga con Sum, Count o Avg rappresenta molti record, quindi il risultato non è normalmente modificabile. Non usare una query aggregata come origine principale di una maschera di inserimento. È invece perfetta per report, dashboard e controlli riepilogativi.
Somma nelle maschere
Una maschera può basarsi su una query di dettaglio e mostrare totali nel piè di pagina, ma per analisi riutilizzabili spesso è meglio una query Totali. Separare il livello dati dalla presentazione rende più facile usare lo stesso calcolo in report diversi.
Somma nei report
I report Access possono calcolare totali per gruppo e complessivi. Scegli se aggregare nella query o nel report in base al riuso. Se il KPI serve a più oggetti, calcolarlo nella query evita duplicazione della logica.
Scenario vendite
Una piccola azienda vuole totale, numero e media ordini per cliente. Crea qryOrdiniBase con una riga per ordine. Poi qryKPICliente raggruppa IDCliente e calcola Sum(TotaleOrdine), Count(IDOrdine) e Avg(TotaleOrdine). Collega infine Clienti per mostrare RagioneSociale.
Controlla un cliente noto con tre ordini da 100, 200 e 300: totale 600, conteggio 3, media 200. Questo semplice test verifica contemporaneamente le tre funzioni.
Scenario magazzino
Per ogni prodotto puoi sommare QuantitaMovimento distinguendo carichi e scarichi con un campo calcolato firmato. Puoi contare il numero di movimenti e calcolare la quantità media per movimento. Per la giacenza, però, definisci con precisione il segno di ogni tipo movimento e gestisci eventuali rettifiche.
Scenario assistenza
Raggruppa per Tecnico: Count IDTicket per volume, Avg OreRisoluzione per durata media e Sum OreLavorate per impegno totale. Aggiungi il periodo come filtro. La combinazione dei KPI offre una lettura più completa rispetto a una sola metrica.
Media e valori estremi
Una media può essere distorta da outlier. Access supporta anche Min e Max, che possono aiutare a individuare valori estremi. Per analisi statistiche avanzate potrebbe essere utile esportare dati o usare strumenti più adatti, ma per molti report gestionali Access è sufficiente.
Controllo delle unità di misura
Non sommare valori con unità diverse. Se una tabella contiene ore e minuti in formati misti, normalizza prima. Se contiene importi in valute diverse, converti con regole e tassi espliciti prima di sommare. Una funzione aggregata corretta non corregge un modello dati incoerente.
Arrotondamenti e Media
Per importi economici decidi quando arrotondare. Calcolare la media di valori già arrotondati può differire dalla media dei valori precisi poi arrotondata. Documenta la regola usata nei report ufficiali.
Microsoft 365, Access 2024 e Runtime
Sum, Count e Avg sono funzioni consolidate disponibili nelle versioni desktop moderne. Microsoft 365 e Access 2024 usano lo stesso concetto di query Totali. Runtime può eseguire query e report già predisposti.
32 e 64 bit
Le funzioni aggregate non cambiano tra 32 e 64 bit. La bitness conta per driver e componenti esterni, non per il calcolo su tabelle Access interne.
Come documentare i KPI
Scrivi cosa significa ogni indicatore. Numero ordini deve specificare se esclude annullati. Totale vendite deve chiarire se include IVA e resi. Media ordine deve specificare se usa ordini lordi o netti. Questa documentazione evita divergenze tra report.
Errori comuni
Somma troppo alta: controlla join e righe duplicate. Conteggio troppo alto: stai contando righe dettaglio invece di entità. Media inattesa: controlla Null e valori estremi. Troppi gruppi: hai lasciato Raggruppa per su un campo di dettaglio. Nessun record: verifica criteri e tipi dei parametri.
Metodo di verifica
Scegli un gruppo piccolo, esporta o osserva i record di dettaglio, calcola manualmente somma, conteggio e media e confronta. Poi modifica un record noto e verifica che il risultato cambi come previsto. Infine prova un gruppo con Null e uno senza record.
Fonti Microsoft
Per le query e l’esecuzione consulta Run a query. Per query basate su più tabelle consulta Create a query based on multiple tables. La documentazione Access su Totali e funzioni aggregate approfondisce Sum, Count e Avg.
FAQ
Count conta i Null?
Count di un campo considera i valori non Null. Scegli consapevolmente il campo da contare.
Come conto ordini distinti?
Se la query dettaglio ripete IDOrdine, crea prima una query con una riga per ordine e conta quella.
Come faccio una media ponderata?
Calcola la somma dei valori ponderati e dividila per la somma dei pesi. Avg semplice non basta.
Posso usare parametri?
Sì, per periodi, clienti, categorie e soglie.
Perché la query non è modificabile?
Perché ogni riga aggregata rappresenta più record di origine.
Posso usare le tre funzioni insieme?
Sì. È comune mostrare totale, numero record e media nello stesso gruppo.
Checklist finale
Definisci l’entità di ogni riga, controlla i join, filtra il periodo, scegli il campo giusto per Count, gestisci Null, verifica le unità, testa un gruppo manualmente, documenta il KPI, controlla arrotondamenti e non confondere righe dettaglio con entità distinte.
Conclusione
Usare Somma, Conteggio e Media nelle query Access è semplice soltanto quando il livello dei dati è corretto. La funzione giusta applicata a righe sbagliate produce un risultato formalmente valido ma logicamente falso. Costruisci query di dettaglio pulite, aggrega al livello desiderato e verifica sempre almeno un caso manualmente.
Continua con la guida alle query Totali e consulta la categoria Guide Access.