Come creare una query totali in Access: tutorial pratico

Creare una query Totali in Access permette di raggruppare molti record e ottenere riepiloghi come somma delle vendite per cliente, numero di ordini per mese, media dei prezzi per categoria, valore minimo o massimo e altri indicatori. È il modo naturale per passare dal dettaglio operativo a informazioni aggregate utili per report e decisioni.

In questa guida vediamo come usare la riga Totale nella griglia di progettazione, la differenza tra Raggruppa per, Somma, Conteggio, Media, Min, Max, Primo, Ultimo e Where, come filtrare prima o dopo l’aggregazione, come scrivere GROUP BY in SQL, come lavorare con più tabelle e come risolvere risultati duplicati o non aggiornabili. Le procedure valgono per Access desktop in Microsoft 365 e Access 2024 su Windows. Runtime può eseguire query già create ma non è l’ambiente completo di sviluppo.

Che cos’è una query Totali

Una query Totali parte da uno o più insiemi di record e li raggruppa secondo uno o più campi. Se la tabella Ordini contiene mille righe, una query può produrre una sola riga per cliente con il totale venduto, oppure una riga per mese con il numero di ordini.

Il principio SQL corrisponde a GROUP BY e alle funzioni aggregate. Access rende la costruzione grafica attraverso la riga Totale. Per ripassare la query di selezione leggi query di selezione in Access. Tutte le guide sono nella categoria Guide Access.

Come creare una query Totali passo passo

1. Crea una query di selezione

Vai su Crea, Struttura query e aggiungi Ordini. Inserisci IDCliente e TotaleOrdine.

2. Attiva Totali

Nella scheda Struttura fai clic su Totali. Compare una nuova riga nella griglia. Per impostazione iniziale Access assegna Raggruppa per.

3. Scegli il campo di raggruppamento

Lascia Raggruppa per sotto IDCliente. Questo crea un gruppo per ogni cliente.

4. Scegli la funzione

Sotto TotaleOrdine seleziona Somma. Access calcola il totale di tutti gli ordini appartenenti allo stesso cliente.

5. Esegui e verifica

Passa al Foglio dati. Ogni cliente compare una sola volta con il totale corrispondente. Confronta almeno un cliente con i record originali.

Raggruppa per

Raggruppa per definisce le dimensioni del riepilogo. Se raggruppi per IDCliente ottieni una riga per cliente. Se aggiungi anche Anno e Mese, ottieni una riga per cliente e periodo. Più campi di raggruppamento usi, più dettagliato sarà il risultato.

Un errore frequente è aggiungere un campo di dettaglio e lasciarlo su Raggruppa per, ottenendo molte più righe del previsto. Se vuoi una sola riga per cliente, non aggiungere campi che distinguono ogni singolo ordine.

Somma

Somma è adatta a importi, quantità, ore e altri valori additivi. Puoi sommare TotaleOrdine, Quantita o OreLavorate. Se il totale di riga non è memorizzato, puoi prima creare una query con campo calcolato e poi aggregarla.

Approfondisci i calcoli nella guida query con campi calcolati.

Conteggio

Conteggio permette di sapere quanti record ci sono in ogni gruppo. Per esempio puoi contare gli ordini per cliente. Se conti un campo che può essere Null, ricorda che Count sul campo considera i valori non Null. Per contare tutte le righe, in SQL si usa spesso Count con asterisco; nella griglia valuta quale campo è sempre valorizzato, come la chiave primaria.

Media

Media calcola il valore medio dei record del gruppo. È utile per prezzo medio, durata media, punteggio medio o importo medio ordine. Prima di interpretare il dato, controlla come vengono gestiti Null e valori anomali.

Min e Max

Min restituisce il valore minimo, Max il massimo. Puoi trovare la prima o ultima data in senso cronologico, il prezzo più basso o alto, la quantità minima o massima. Per ottenere il record completo associato al massimo non basta Max: serve una seconda query o un join sul valore individuato.

Primo e Ultimo

Le funzioni Primo e Ultimo non devono essere confuse con minimo e massimo. Dipendono dall’ordine interno dei record e non sono la soluzione migliore per determinare la data più vecchia o recente. Per le date usa Min e Max quando vuoi il valore cronologico estremo.

Where nella riga Totale

Where serve per applicare un criterio senza raggruppare quel campo e senza mostrarlo nel risultato. Se vuoi vendite per cliente soltanto nel 2026, puoi aggiungere DataOrdine, impostare Totale su Where, togliere Mostra e usare un criterio di periodo.

Questo permette di filtrare i record prima dell’aggregazione. È diverso dal filtrare il risultato aggregato.

Filtrare prima o dopo l’aggregazione

In SQL la distinzione corrisponde grossomodo a WHERE e HAVING. WHERE filtra le righe prima del GROUP BY. HAVING filtra i gruppi dopo il calcolo. Se vuoi considerare solo ordini del 2026, filtra prima. Se vuoi mostrare solo clienti con totale vendite superiore a 10.000, devi filtrare il risultato aggregato.

Capire questa differenza evita risultati sbagliati e spesso migliora le prestazioni.

Esempio: totale vendite per cliente

Se il totale di ogni riga ordine deriva da Quantita per Prezzo, crea qryVenditeDettaglio con Cliente e TotaleRiga. Poi crea qryVenditePerCliente, usa Cliente con Raggruppa per e TotaleRiga con Somma. Questa struttura a due livelli è facile da testare.

Esempio: ordini per mese

Crea un campo calcolato MeseOrdine: Format([DataOrdine],'yyyy-mm'), attiva Totali, raggruppa per MeseOrdine e applica Conteggio a IDOrdine. Otterrai il numero di ordini per mese.

Per grandi volumi valuta l’uso di Year e Month separati, che possono essere più adatti a ulteriori filtri e ordinamenti.

Esempio: media ordine per cliente

Raggruppa per IDCliente e usa Media su TotaleOrdine. Aggiungi anche Conteggio per conoscere il numero di ordini: una media basata su due ordini e una basata su duecento hanno significato statistico diverso.

Query Totali tra più tabelle

Puoi unire Clienti e Ordini, raggruppare per RagioneSociale e sommare TotaleOrdine. Prima verifica il join. Un errore di molti-a-molti può moltiplicare le righe e gonfiare i totali.

Leggi come creare query tra più tabelle per approfondire la struttura.

Raggruppare per nome o per ID

Per report puoi mostrare RagioneSociale, ma in molti casi è più robusto raggruppare su IDCliente e includere il nome attraverso il join. Due clienti possono avere lo stesso nome, mentre l’ID deve essere univoco.

SQL GROUP BY

Una query concettuale può essere SELECT IDCliente, Sum(TotaleOrdine) AS TotaleVendite FROM Ordini GROUP BY IDCliente;. Con un filtro sulle righe aggiungi WHERE prima di GROUP BY. Con un filtro sui gruppi aggiungi HAVING dopo GROUP BY.

HAVING

Per visualizzare solo clienti con totale superiore a una soglia puoi usare una condizione sul valore aggregato. In SQL: HAVING Sum(TotaleOrdine)>10000. In Access puoi impostare un criterio sulla colonna aggregata.

Parametri in una query Totali

Puoi chiedere Data iniziale e Data finale e poi aggregare soltanto quel periodo. Dichiara i parametri come Data/Ora. Per una soluzione professionale usa una maschera filtro.

Consulta query parametro in Access.

Null nelle aggregazioni

Le funzioni aggregate trattano Null in modo specifico. Non trasformare automaticamente Null in zero senza comprendere il significato. Per una media, zero e dato mancante producono interpretazioni molto diverse. Usa Nz solo quando il requisito dice chiaramente che assenza equivale a zero.

Duplicazioni che alterano le somme

Se una query unisce Ordini e DettagliOrdine, il totale dell’ordine può ripetersi per ogni riga di dettaglio. Sommare TotaleOrdine dopo quel join moltiplicherebbe il valore. Devi aggregare al livello corretto oppure usare il totale delle righe di dettaglio, non un valore di testata ripetuto.

Questa è una delle cause più comuni di report apparentemente corretti ma economicamente sbagliati.

Query Totali e modificabilità

Il risultato di una query aggregata non è normalmente aggiornabile. Una riga con Somma rappresenta molti record di origine e Access non può sapere quale singolo record modificare. È normale usare query Totali per report e analisi, non per maschere di inserimento dati.

Totali e crosstab

Una query a campi incrociati aggiunge una dimensione a righe e colonne. Spesso usa Somma, Conteggio o Media come valore. Se vuoi confrontare mesi per cliente, una crosstab può essere più leggibile di una semplice query Totali.

Prestazioni

Filtra i record prima dell’aggregazione quando possibile. Indicizza campi usati nei criteri e nei join. Non raggruppare campi inutili. Su grandi tabelle collegate a SQL Server valuta se l’aggregazione può essere eseguita lato server.

Query Totali su ODBC

Access può aggregare dati da tabelle collegate, ma il modo in cui la query viene delegata dipende dal driver e dalla struttura. Per report pesanti usa viste o query pass-through se il server può calcolare il risultato in modo più efficiente.

Microsoft 365 e Access 2024

Le query Totali sono disponibili nelle versioni desktop moderne. Il comportamento di Raggruppa per e delle funzioni aggregate è consolidato. Microsoft 365 riceve aggiornamenti continui, Access 2024 è perpetuo.

Runtime

Runtime può eseguire query Totali già salvate come parte dell’applicazione e mostrare report basati su di esse. Per progettare e modificare liberamente gli oggetti usa Access completo.

32 e 64 bit

La logica delle aggregazioni non cambia. La bitness rileva per driver e componenti esterni, non per Sum, Count o Avg su tabelle Access interne.

Scenario pratico: dashboard commerciale

Costruisci una query di dettaglio delle vendite con Cliente, Data, Prodotto e TotaleRiga. Da questa crea qryKPICliente con Raggruppa per Cliente, Somma TotaleRiga, Conteggio IDOrdine e Media TotaleRiga. Il risultato può alimentare un report o una dashboard.

Non confondere però Conteggio righe dettaglio con Conteggio ordini. Se ogni ordine contiene più prodotti, contare IDOrdine nella query di dettaglio conta le righe, non gli ordini distinti. Per ottenere il numero reale di ordini crea prima una query che restituisce una riga per ordine.

Scenario pratico: presenze

In una tabella Presenze puoi raggruppare per Dipendente e Mese, sommare Ore e contare i giorni registrati. Applica un parametro periodo con Where sulla DataPresenza. Per straordinari e assenze crea campi calcolati nella query di dettaglio e aggrega dopo.

Controlli di qualità

Confronta un gruppo noto con un calcolo manuale. Verifica il numero di record prima e dopo il raggruppamento. Controlla Null, record duplicati e join. Se una somma è troppo alta, cerca prima una moltiplicazione di righe causata dal modello relazionale.

Convenzioni di denominazione

Usa nomi come qryVenditePerCliente, qryOrdiniPerMese, qryOrePerDipendente. Se usi query intermedie, rendi evidente la gerarchia. Documenta le definizioni dei KPI: Totale vendite potrebbe includere o escludere IVA, resi e sconti.

Fonti Microsoft

Microsoft documenta query, criteri e aggregazioni nella guida Access. Per query multi-tabella consulta Create a query based on multiple tables. Per l’esecuzione e le differenze tra query di selezione e azione consulta Run a query.

FAQ

Come faccio la somma per cliente?

Attiva Totali, usa Raggruppa per sul cliente e Somma sul campo importo.

Come conto i record?

Usa Conteggio su un campo sempre valorizzato, preferibilmente una chiave, comprendendo però il livello di dettaglio della query.

Perché vedo troppe righe?

Probabilmente stai raggruppando anche un campo che distingue i record oppure hai un join che moltiplica le righe.

Posso filtrare per data?

Sì. Usa il campo data con Totale impostato su Where e inserisci il criterio.

Il risultato è modificabile?

Normalmente no. Una riga aggregata rappresenta più record.

Posso usare parametri?

Sì, soprattutto per periodi e soglie. Dichiara i tipi.

Checklist finale

Definisci il livello di aggregazione, controlla i join, scegli i campi Raggruppa per, applica la funzione corretta, filtra prima quando possibile, usa HAVING per i gruppi, gestisci Null, verifica il conteggio reale delle entità, prova un calcolo manuale e documenta il significato del KPI.

Conclusione

Creare una query Totali in Access è semplice dal punto di vista tecnico, ma richiede precisione nel livello di raggruppamento. La differenza tra un report affidabile e uno sbagliato spesso dipende da una sola scelta: quali righe rappresentano davvero il fenomeno che vuoi sommare o contare. Usa query di dettaglio pulite, aggregazioni separate e controlli manuali.

Approfondisci anche i campi calcolati e consulta tutte le risorse nella categoria Guide Access.

Lascia un commento