Condividi tramite


Componenti della clausola GROUP BY

La clausola GROUP BY include i componenti seguenti:

  • Una o più espressioni senza aggregati. Tali espressioni sono in genere riferimenti alle colonne di raggruppamento.
  • La parola chiave facoltativa ALL, per specificare che devono essere restituiti tutti i gruppi generati dalla clausola GROUP BY, anche quando non includono alcuna riga che soddisfa le condizioni di ricerca.
  • Gli operatori CUBE o ROLLUP.
  • In genere con la clausola GROUP BY viene applicata la clausola HAVING, che è tuttavia possibile specificare separatamente.

È possibile eseguire il raggruppamento in base a un'espressione se questa non include funzioni di aggregazione. Ad esempio:

SELECT DATEPART(yy, HireDate) AS Year,
       COUNT(*) AS NumberOfHires
FROM AdventureWorks.HumanResources.Employee
GROUP BY DATEPART(yy, HireDate)

Set di risultati: 

Year        NumberOfHires
----------- -------------
1997        2
2001        21
2000        45
1996        1
2003        3
1999        198
1998        16
2002        4

(8 row(s) affected)

In una clausola GROUP BY è necessario specificare il nome della colonna di una tabella o di una vista, non il nome di una colonna del set di risultati assegnato tramite una clausola AS. Ad esempio, la sostituzione della clausola GROUP BY DATEPART(yy, HireDate) con GROUP BY Year non è consentita.

Nella clausola GROUP BY è possibile specificare più colonne per nidificare i gruppi. In una tabella è quindi possibile eseguire raggruppamenti in base a qualsiasi combinazione di colonne. La query seguente consente di individuare i valori del prezzo medio e del totale delle vendite per l'anno in corso raggruppati in base all'ID prodotto e all'ID offerta speciale:

USE AdventureWorks;
GO
SELECT ProductID, SpecialOfferID, AVG(UnitPrice) AS 'Average Price', 
    SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY ProductID, SpecialOfferID
ORDER BY ProductID
GO

Vedere anche

Altre risorse

SELECT (Transact-SQL)

Guida in linea e informazioni

Assistenza su SQL Server 2005