Procedura: raggruppare righe nei risultati di una query

Se si desidera creare dei subtotali o visualizzare altre informazioni riepilogative per i sottoinsiemi di una tabella, è possibile utilizzare una query di aggregazione. Ciascun gruppo creato riepiloga i dati per tutte le righe della tabella con lo stesso valore.

Può essere necessario, ad esempio, visualizzare il prezzo medio di un libro nella tabella titles, suddividendo i risultati in base all'editore. Per ottenere questo risultato, è necessario raggruppare la query in base all'editore (ad esempio, pub_id). L'output della query potrebbe essere analogo al seguente:

Schermata QueryGroupingRowsResultsPane

Quando si raggruppano i dati, è possibile visualizzare solo dati riepilogativi o raggruppati, ad esempio:

  • I valori delle colonne raggruppate (quelli che compaiono nella clausola GROUP BY). Nell'esempio precedente, pub_id è la colonna raggruppata.

  • I valori prodotti da funzioni di aggregazione quali SUM( ) e AVG( ). Nell'esempio precedente, la seconda colonna viene generata utilizzando la funzione AVG( ) con la colonna price.

Non è possibile visualizzare valori di singole righe. Se ad esempio si effettua il raggruppamento solo in base all'editore, non sarà possibile visualizzare anche singoli titoli nella query. Se pertanto si aggiungono colonne all'output della query, in Progettazione query e Progettazione visualizzazioni queste verranno aggiunte automaticamente alla clausola GROUP BY dell'istruzione nel riquadro SQL. Se invece si desidera che sia la colonna ad essere aggregata, sarà possibile specificare una funzione di aggregazione per tale colonna.

Se si definisce un raggruppamento in base a più colonne, in ogni gruppo della query verranno visualizzati i valori aggregati per tutte le colonne raggruppate.

Nella seguente query, ad esempio, effettuata sulla tabella titles il raggruppamento viene effettuato in base all'editore (pub_id) e al tipo di libro (type). I risultati della query vengono ordinati in base all'editore e mostrano informazioni di riepilogo su ogni tipo di libro prodotto dall'editore:

SELECT pub_id, type, SUM(price) Total_price
FROM titles
GROUP BY pub_id, type

L'output risultante può essere analogo al seguente:

Schermata QueryGroupingRowsSampleOutput

Nota

È possibile che le finestre di dialogo e i comandi di menu visualizzati siano diversi da quelli descritti nella Guida a seconda delle impostazioni attive o dell'edizione del programma. Per modificare le impostazioni, scegliere Importa/Esporta impostazioni dal menu Strumenti. Per ulteriori informazioni, vedere Gestione delle impostazioni.

Per raggruppare le righe

  1. Iniziare la query aggiungendo le tabelle da riepilogare nel riquadro Diagramma.

  2. Fare clic con il pulsante destro del mouse sullo sfondo del riquadro Diagramma, quindi scegliere Aggiungi raggruppamento dal menu di scelta rapida. Verrà aggiunta una colonna Raggruppa alla griglia nel riquadro Criteri.

  3. Aggiungere al riquadro Criteri la colonna o la combinazione di colonne da raggruppare. Per visualizzare la colonna nell'output della query, assicurarsi che la colonna Output sia selezionata per l'output.

    In Progettazione query e Progettazione visualizzazioni sarà aggiunta una clausola GROUP BY all'istruzione nel riquadro SQL. L'istruzione SQL, ad esempio, può essere analoga alla seguente:

    SELECT pub_id
    FROM titles
    GROUP BY pub_id
    
  4. Aggiungere al riquadro Criteri la colonna o la combinazione di colonne da aggregare. Assicurarsi che la colonna sia contrassegnata per l'output.

  5. Nella cella della griglia Raggruppa per la colonna da aggregare, selezionare la funzione di aggregazione appropriata.

    Verrà assegnato automaticamente un alias di colonna alla colonna di cui si effettua il riepilogo. Tale alias generato automaticamente può essere sostituito con un alias più significativo. Per informazioni dettagliate, vedere Procedura: creare alias di colonna.

    Schermata QueryGroupingRows

    L'istruzione corrispondente nel riquadro SQL può essere analoga alla seguente:

    SELECT   pub_id, SUM(price) AS Totalprice
    FROM     titles
    GROUP BY pub_id
    

Vedere anche

Altre risorse

Ordinamento e raggruppamento dei risultati delle query