Aracılığıyla paylaş


SELECT - GRUP BAZINDAN Transact-SQL

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Sorgu sonucunu genellikle her grupta bir veya daha fazla toplama gerçekleştirerek satır gruplarına bölen select deyimi yan tümcesi. SELECT deyimi, grup başına bir satır döndürür.

Syntax

Transact-SQL söz dizimi kuralları

-- Syntax for SQL Server and Azure SQL Database   
-- ISO-Compliant Syntax  
  
GROUP BY {
      column-expression  
    | ROLLUP ( <group_by_expression> [ ,...n ] )  
    | CUBE ( <group_by_expression> [ ,...n ] )  
    | GROUPING SETS ( <grouping_set> [ ,...n ]  )  
    | () --calculates the grand total 
} [ ,...n ] 
 
<group_by_expression> ::=  
      column-expression  
    | ( column-expression [ ,...n ] )    
   
<grouping_set> ::=  
      () --calculates the grand total  
    | <grouping_set_item>  
    | ( <grouping_set_item> [ ,...n ] )  
  
<grouping_set_item> ::=  
      <group_by_expression>  
    | ROLLUP ( <group_by_expression> [ ,...n ] )  
    | CUBE ( <group_by_expression> [ ,...n ] )  
  

-- For backward compatibility only.
-- Non-ISO-Compliant Syntax for SQL Server and Azure SQL Database 
  
GROUP BY {
       ALL column-expression [ ,...n ] 
    | column-expression [ ,...n ]  WITH { CUBE | ROLLUP }    
       }

-- Syntax for Azure Synapse Analytics 
  
GROUP BY {
      column-name [ WITH (DISTRIBUTED_AGG) ]  
    | column-expression
    | ROLLUP ( <group_by_expression> [ ,...n ] ) 
} [ ,...n ]

-- Syntax for Parallel Data Warehouse  
  
GROUP BY {
      column-name [ WITH (DISTRIBUTED_AGG) ]  
    | column-expression
} [ ,...n ]

Arguments

Sütun ifadesi

Sütunda bir sütun veya toplama dışı bir hesaplama belirtir. Bu sütun bir tabloya, türetilmiş tabloya veya görünüme ait olabilir. Sütunun SELECT deyiminin FROM yan tümcesinde görünmesi gerekir, ancak SELECT listesinde görünmesi gerekmez.

Geçerli ifadeler için bkz. ifade.

Sütunun SELECT deyiminin FROM yan tümcesinde görünmesi gerekir, ancak SELECT listesinde görünmesi gerekmez. Ancak, seçme< listesindeki herhangi bir ayrım olmayan ifadedeki >her tablo veya görünüm sütunu GROUP BY listesine eklenmelidir:

Aşağıdaki deyimlere izin verilir:

SELECT ColumnA, ColumnB FROM T GROUP BY ColumnA, ColumnB;  
SELECT ColumnA + ColumnB FROM T GROUP BY ColumnA, ColumnB;  
SELECT ColumnA + ColumnB FROM T GROUP BY ColumnA + ColumnB;  
SELECT ColumnA + ColumnB + constant FROM T GROUP BY ColumnA, ColumnB;  

Aşağıdaki deyimlere izin verilmez:

SELECT ColumnA, ColumnB FROM T GROUP BY ColumnA + ColumnB;  
SELECT ColumnA + constant + ColumnB FROM T GROUP BY ColumnA + ColumnB;  

Sütun ifadesi aşağıdakileri içeremez:

  • SELECT listesinde tanımlanan bir sütun diğer adı. FROM yan tümcesinde tanımlanan türetilmiş bir tablo için sütun diğer adı kullanabilir.
  • Metin, ntext veya resim türünde bir sütun. Ancak, geçerli bir veri türü değeri döndüren bir işlev için bağımsız değişken olarak metin, ntext veya görüntü sütununu kullanabilirsiniz. Örneğin, ifade SUBSTRING() ve CAST() kullanabilir. Bu, HAVING yan tümcesindeki ifadeler için de geçerlidir.
  • xml veri türü yöntemleri. Xml veri türü yöntemlerini kullanan kullanıcı tanımlı bir işlev içerebilir. Xml veri türü yöntemlerini kullanan hesaplanan bir sütun içerebilir.
  • Bir alt sorgu. Hata 144 döndürülür.
  • Dizinli görünümden bir sütun.

GROUP BY sütun-ifadesi [ ,... n ]

SELECT deyimi sonuçlarını bir veya daha fazla sütun ifadesi listesindeki değerlere göre gruplandırın.

Örneğin, bu sorgu Ülke, Bölge ve Satış sütunlarını içeren bir Sales tablosu oluşturur. Dört satır ekler ve satırlardan ikisi Ülke ve Bölge için eşleşen değerlere sahiptir.

CREATE TABLE Sales ( Country VARCHAR(50), Region VARCHAR(50), Sales INT );

INSERT INTO sales VALUES (N'Canada', N'Alberta', 100);
INSERT INTO sales VALUES (N'Canada', N'British Columbia', 200);
INSERT INTO sales VALUES (N'Canada', N'British Columbia', 300);
INSERT INTO sales VALUES (N'United States', N'Montana', 100);

Sales tablosu şu satırları içerir:

Country Region Sales
Canada Alberta 100
Canada Britanya Kolumbiyası 200
Canada Britanya Kolumbiyası 300
United States Montana 100

Bu sonraki sorgu Ülke ve Bölge gruplarını oluşturur ve her değer bileşimi için toplam toplamı döndürür.

SELECT Country, Region, SUM(sales) AS TotalSales
FROM Sales
GROUP BY Country, Region;

Ülke ve Bölge için 3 değer bileşimi bulunduğundan sorgu sonucunun 3 satırı vardır. Kanada ve Britanya Kolumbiyası için TotalSales iki satırın toplamıdır.

Country Region TotalSales
Canada Alberta 100
Canada Britanya Kolumbiyası 500
United States Montana 100

TOPLAMAYA GÖRE GRUPLANDıR

Sütun ifadelerinin her birleşimi için bir grup oluşturur. Buna ek olarak, sonuçları alt toplamlara ve genel toplamlara "yuvarlar". Bunu yapmak için, grupları ve toplamaları oluşturduğu sütun ifadelerinin sayısını azaltarak sağdan sola doğru hareket eder.

Sütun sırası ROLLUP çıkışını etkiler ve sonuç kümesindeki satır sayısını etkileyebilir.

Örneğin, GROUP BY ROLLUP (col1, col2, col3, col4) aşağıdaki listelerde sütun ifadelerinin her birleşimi için gruplar oluşturur.

  • col1, col2, col3, col4
  • col1, col2, col3, NULL
  • col1, col2, NULL, NULL
  • col1, NULL, NULL, NULL
  • NULL, NULL, NULL, NULL --Bu genel toplamdır

Bu kod, önceki örnekteki tabloyu kullanarak basit bir GROUP BY yerine GROUP BY ROLLUP işlemini çalıştırır.

SELECT Country, Region, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY ROLLUP (Country, Region);

Sorgu sonucu, ROLLUP olmadan basit GROUP BY ile aynı toplamalara sahiptir. Buna ek olarak, Ülke'nin her değeri için alt toplamlar oluşturur. Son olarak, tüm satırlar için genel bir toplam verir. Sonuç şöyle görünür:

Country Region TotalSales
Canada Alberta 100
Canada Britanya Kolumbiyası 500
Canada NULL 600
United States Montana 100
United States NULL 100
NULL NULL 700

KÜBÜNE GÖRE GRUPLANDıR ( )

GROUP BY CUBE, tüm olası sütun bileşimleri için gruplar oluşturur. GROUP BY CUBE (a, b) için sonuçların benzersiz değerleri (a, b), (NULL, b), (a, NULL) ve (NULL, NULL) grupları vardır.

Bu kod, önceki örneklerde yer alan tabloyu kullanarak Ülke ve Bölge üzerinde GROUP BY CUBE işlemini çalıştırır.

SELECT Country, Region, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY CUBE (Country, Region);

Sorgu sonucunda benzersiz değerler (Ülke, Bölge), (NULL, Bölge), (Ülke, NULL) ve (NULL, NULL) grupları vardır. Sonuçlar şöyle görünür:

Country Region TotalSales
Canada Alberta 100
NULL Alberta 100
Canada Britanya Kolumbiyası 500
NULL Britanya Kolumbiyası 500
United States Montana 100
NULL Montana 100
NULL NULL 700
Canada NULL 600
United States NULL 100

GRUPLANDıRMA KÜMELERINE GÖRE GRUPLANDıRMA ( )

GRUPLANDıRMA KÜMELERI seçeneği, birden çok GROUP BY yan tümcesini tek bir GROUP BY yan tümcesinde birleştirme olanağı sağlar. Sonuçlar, belirtilen grupların UNION ALL değerine eşdeğerdir.

Örneğin, GROUP BY ROLLUP (Country, Region) aynı GROUP BY GROUPING SETS ( ROLLUP (Country, Region) ) sonuçları döndür.

GRUPLANDıRMA KÜMELERI iki veya daha fazla öğeye sahip olduğunda, sonuçlar öğelerin birleşimidir. Bu örnek, Ülke ve Bölge için ROLLUP ve KÜP sonuçlarının birleşimini döndürür.

SELECT Country, Region, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY GROUPING SETS ( ROLLUP (Country, Region), CUBE (Country, Region) );

Sonuçlar, iki GROUP BY deyiminin birleşimini döndüren bu sorguyla aynıdır.

SELECT Country, Region, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY ROLLUP (Country, Region)
UNION ALL
SELECT Country, Region, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY CUBE (Country, Region);

SQL, gruplandırma KÜMELERI listesi için oluşturulan yinelenen grupları birleştirmez. Örneğin, içinde GROUP BY ( (), CUBE (Country, Region) )her iki öğe de genel toplam için bir satır döndürür ve her iki satır da sonuçlarda listelenir.

GRUP ()

Genel toplamı oluşturan boş grubu belirtir. Bu, gruplandırma kümesinin öğelerinden biri olarak kullanışlıdır. Örneğin, bu deyim her ülkenin/bölgenin toplam satışını verir ve ardından tüm ülkeler/bölgeler için genel toplamı verir.

SELECT Country, SUM(Sales) AS TotalSales
FROM Sales
GROUP BY GROUPING SETS ( Country, () );

GROUP BY ALL sütun-ifadesi [ ,... n ]

Şunlar için geçerlidir: SQL Server ve Azure SQL Veritabanı

Note

Bu söz dizimi yalnızca geriye dönük uyumluluk için sağlanır. Gelecekteki bir sürümde kaldırılacaktır. Yeni geliştirme çalışmalarında bu söz dizimini kullanmaktan kaçının ve şu anda bu söz dizimini kullanan uygulamaları değiştirmeyi planlayın.

WHERE yan tümcesindeki arama ölçütlerini karşılayıp karşılamadıklarına bakılmaksızın tüm grupların sonuçlara dahil edilmeyeceğini belirtir. Arama ölçütlerini karşılamamış grupların toplama için NULL değeri vardır.

TÜMÜNE GÖRE GRUPLANDıR:

  • Sorguda where yan tümcesi de varsa, uzak tablolara erişen sorgularda desteklenmez.
  • FILESTREAM özniteliğine sahip sütunlarda başarısız olur.

GROUP BY sütun-ifadesi [ ,... n ] WITH { CUBE | ROLLUP }

Şunlar için geçerlidir: SQL Server ve Azure SQL Veritabanı

Note

Bu söz dizimi yalnızca geriye dönük uyumluluk için sağlanır. Yeni geliştirme çalışmalarında bu söz dizimini kullanmaktan kaçının ve şu anda bu söz dizimini kullanan uygulamaları değiştirmeyi planlayın.

(DISTRIBUTED_AGG) İLE

Şunlar için geçerlidir: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

DISTRIBUTED_AGG sorgu ipucu, toplama işlemi gerçekleştirmeden önce yüksek düzeyde paralel işleme (MPP) sistemini belirli bir sütundaki tabloyu yeniden dağıtmaya zorlar. GROUP BY yan tümcesindeki yalnızca bir sütunda DISTRIBUTED_AGG sorgu ipucu bulunabilir. Sorgu tamamlandıktan sonra yeniden dağıtılan tablo bırakılır. Özgün tablo değiştirilmez.

NOT: DISTRIBUTED_AGG sorgu ipucu, önceki Analytics Platform Sistemi (PDW) sürümleriyle geriye dönük uyumluluk için sağlanır ve çoğu sorgunun performansını iyileştirmez. Varsayılan olarak, MPP toplamaların performansını artırmak için verileri gerektiği gibi yeniden dağıtır.

Genel Açıklamalar

GROUP BY, SELECT deyimiyle nasıl etkileşim kurar?

SEÇİN listesi:

  • Vektör agregalar. Toplama işlevleri SELECT listesine dahil edilirse, GROUP BY her grup için bir özet değeri hesaplar. Bunlar vektör toplamaları olarak bilinir.
  • Belirgin agregalar. AVG (DISTINCT column_name), COUNT (DISTINCT column_name) ve SUM (DISTINCT column_name) toplamları ROLLUP, KÜP ve GRUPLANDıRMA KÜMELERI ile desteklenir.

WHERE maddesi:

  • SQL, herhangi bir gruplandırma işlemi gerçekleştirilmeden önce WHERE yan tümcesindeki koşulları karşılamayan Satırları kaldırır.

HAVING maddesi:

  • SQL, sonuç kümesindeki grupları filtrelemek için having yan tümcesini kullanır.

ORDER BY yan tümcesi:

  • Sonuç kümesini sıralamak için ORDER BY yan tümcesini kullanın. GROUP BY yan tümcesi sonuç kümesini sıralamaz.

NULL değerler:

  • Gruplandırma sütunu NULL değerler içeriyorsa, tüm NULL değerler eşit kabul edilir ve tek bir grupta toplanır.

Sınırlamalar ve Kısıtlamalar

Şunlar için geçerlidir: SQL Server (2008'den başlayarak) ve Azure Synapse Analytics

Maksimum kapasite

ROLLUP, KÜP veya GRUPLANDıRMA KÜMESİ kullanan bir GROUP BY yan tümcesi için ifade sayısı üst sınırı 32'dir. Grup sayısı üst sınırı 4096'dır (212). GROUP BY yan tümcesinde 4096'dan fazla grup olduğundan aşağıdaki örnekler başarısız olur.

  • Aşağıdaki örnek 4097 (212 + 1) gruplandırma kümeleri oluşturur ve başarısız olur.

    GROUP BY GROUPING SETS( CUBE(a1, ..., a12), b )  
    
  • Aşağıdaki örnek 4097 (212 + 1) grubu oluşturur ve başarısız olur. Hem hem de CUBE ()() gruplandırma kümesi genel bir toplam satırı oluşturur ve yinelenen gruplandırma kümeleri ortadan kaldırılamaz.

    GROUP BY GROUPING SETS( CUBE(a1, ..., a12), ())  
    
  • Bu örnekte geriye dönük uyumlu söz dizimi kullanılır. 8192 (213) gruplandırma kümesi oluşturur ve başarısız olur.

    GROUP BY CUBE (a1, ..., a13)   
    GROUP BY a1, ..., a13 WITH CUBE   
    

    KÜP veya ROLLUP içermeyen geriye dönük uyumlu GROUP BY yan tümceleri için, öğelere göre gruplandırma sayısı GROUP BY sütun boyutları, toplanan sütunlar ve sorguda yer alan toplama değerleriyle sınırlıdır. Bu sınır, ara sorgu sonuçlarını tutmak için gereken ara çalışma tablosundaki 8.060 bayt sınırından kaynaklanır. KÜP veya ROLLUP belirtildiğinde en fazla 12 gruplandırma ifadesine izin verilir.

ISO ve ANSI SQL-2006 GROUP BY Özellikleri desteği

GROUP BY yan tümcesi, SQL-2006 standardına dahil edilen tüm GROUP BY özelliklerini aşağıdaki söz dizimi özel durumları ile destekler:

  • Gruplama kümelerine, açık bir GRUPLANDıRMA KÜMELERI listesinin parçası olmadığı sürece GROUP BY yan tümcesinde izin verilmez. Örneğin, GROUP BY Column1, (Column2, ...ColumnN) standart olarak izin verilir ancak Transact-SQL'de kullanılamaz. Transact-SQL, ve 'yi destekler GROUP BY C1, GROUPING SETS ((Column2, ...ColumnN))GROUP BY Column1, Column2, ... ColumnN. Bunlar, önceki GROUP BY örnektekine eşdeğerdir. Bu, ) öğesinin GROUP BY Column1, (Column2, ...ColumnNolarak yanlış yorumlanabileceği GROUP BY C1, GROUPING SETS ((Column2, ...ColumnN))olasılığını önlemektir ve bu da sembolik olarak eşdeğer değildir.

  • Gruplandırma kümelerinin içinde gruplandırma kümelerine izin verilmez. Örneğin, GROUP BY GROUPING SETS (A1, A2,...An, GROUPING SETS (C1, C2, ...Cn)) SQL-2006 standardında izin verilir ancak Transact-SQL'de kullanılamaz. Transact-SQL, ilk GROUP BY örneğine benzer ve daha net bir söz dizimine sahip olan veya GROUP BY GROUPING SETS( A1, A2,...An, C1, C2, ...Cn )öğesine izin verirGROUP BY GROUPING SETS( (A1), (A2), ... (An), (C1), (C2), ... (Cn) ).

  • GROUP BY [ALL/DISTINCT] yalnızca sütun ifadeleri içeren basit bir GROUP BY yan tümcesinde izin verilir. GRUPLANDıRMA KÜMELERI, ROLLUP, KÜP, KÜPLE veya ROLLUP ile yapılarıyla buna izin verilmez. ALL varsayılandır ve örtükdür. Yalnızca geriye dönük uyumlu söz diziminde de izin verilir.

Desteklenen GROUP BY Özelliklerinin Karşılaştırması

Aşağıdaki tabloda, SQL sürümlerine ve veritabanı uyumluluk düzeyine göre desteklenen GROUP BY özellikleri açıklanmaktadır.

Feature SQL Server Integration Services SQL Server uyumluluk düzeyi 100 veya üzeri Uyumluluk düzeyi 90 olan SQL Server 2008 veya üzeri.
DISTINCT agregalar WITH CUBE veya WITH ROLLUP için desteklenmez. WITH CUBE, WITH ROLLUP, GROUPING SETS, CUBE veya ROLLUP için desteklenir. Uyumluluk düzeyi 100 ile aynıdır.
GROUP BY yan tümcesinde KÜP veya ROLLUP adıyla kullanıcı tanımlı işlev Kullanıcı tanımlı işlev dbo.cube(arg1,... argN) veya dbo.rollup(arg1,... argN) group by yan tümcesine izin verilir.

Örneğin: SELECT SUM (x) FROM T GROUP BY dbo.cube(y);
Kullanıcı tanımlı işlev dbo.cube (arg1,... argN**)** veya dbo.rollup(arg1,... argN) group by yan tümcesine izin verilmez.

Örneğin: SELECT SUM (x) FROM T GROUP BY dbo.cube(y);

Şu hata iletisi döndürülür: "'küp'|' anahtar sözcüğüne yakın yanlış söz dizimi rollup'."

Bu sorunu önlemek için veya ile dbo.cube[dbo].[cube]dbo.rollupdeğiştirin.[dbo].[rollup]

Aşağıdaki örne izin verilir: SELECT SUM (x) FROM T GROUP BY [dbo].[cube](y);
Kullanıcı tanımlı işlev dbo.cube (arg1,... argN) veya dbo.rollup(arg1,... argN) group by yan tümcesine izin verilir

Örneğin: SELECT SUM (x) FROM T GROUP BY dbo.cube(y);
GRUPLANDıRMA KÜMELERI Desteklenmez Supported Supported
CUBE Desteklenmez Supported Desteklenmez
ROLLUP Desteklenmez Supported Desteklenmez
Group BY () gibi genel toplam Desteklenmez Supported Supported
GROUPING_ID fonksiyonu Desteklenmez Supported Supported
GRUPLAMA fonksiyonu Supported Supported Supported
KÜP İLE Supported Supported Supported
ROLLUP İLE Supported Supported Supported
WITH CUBE veya WITH ROLLUP "yinelenen" gruplandırma kaldırma Supported Supported Supported

Examples

A. Basit bir GROUP BY yan tümcesi kullanma

Aşağıdaki örnek, tablodaki her SalesOrderID birinin toplamını SalesOrderDetail alır. Bu örnekte AdventureWorks kullanılmaktadır.

SELECT SalesOrderID, SUM(LineTotal) AS SubTotal  
FROM Sales.SalesOrderDetail AS sod  
GROUP BY SalesOrderID  
ORDER BY SalesOrderID;  

B. Birden çok tabloyla GROUP BY yan tümcesi kullanma

Aşağıdaki örnek, tabloya katılan City tablolardan Address her EmployeeAddress biri için çalışan sayısını alır. Bu örnekte AdventureWorks kullanılmaktadır.

SELECT a.City, COUNT(bea.AddressID) EmployeeCount  
FROM Person.BusinessEntityAddress AS bea   
    INNER JOIN Person.Address AS a  
        ON bea.AddressID = a.AddressID  
GROUP BY a.City  
ORDER BY a.City;  

C. bir ifadeyle GROUP BY yan tümcesi kullanma

Aşağıdaki örnek işlevini kullanarak her yılın toplam satışlarını DATEPART alır. Aynı ifade hem listede SELECT hem de yan tümcesinde GROUP BY bulunmalıdır.

SELECT DATEPART(yyyy,OrderDate) AS N'Year'  
    ,SUM(TotalDue) AS N'Total Order Amount'  
FROM Sales.SalesOrderHeader  
GROUP BY DATEPART(yyyy,OrderDate)  
ORDER BY DATEPART(yyyy,OrderDate);  

D. GROUP BY yan tümcesini HAVING yan tümcesiyle kullanma

Aşağıdaki örnek, yan tümcesinde HAVING oluşturulan gruplardan hangilerinin sonuç kümesine GROUP BY dahil edilmesi gerektiğini belirtmek için yan tümcesini kullanır.

SELECT DATEPART(yyyy,OrderDate) AS N'Year'  
    ,SUM(TotalDue) AS N'Total Order Amount'  
FROM Sales.SalesOrderHeader  
GROUP BY DATEPART(yyyy,OrderDate)  
HAVING DATEPART(yyyy,OrderDate) >= N'2003'  
ORDER BY DATEPART(yyyy,OrderDate);  

Örnekler: Azure Synapse Analytics ve Paralel Veri Ambarı

E. GROUP BY yan tümcesinin temel kullanımı

Aşağıdaki örnek, her gündeki tüm satışların toplam tutarını bulur. Her gün için tüm satışların toplamını içeren bir satır döndürülür.

-- Uses AdventureWorksDW  
  
SELECT OrderDateKey, SUM(SalesAmount) AS TotalSales FROM FactInternetSales  
GROUP BY OrderDateKey ORDER BY OrderDateKey;  

F. DISTRIBUTED_AGG ipucunun temel kullanımı

Bu örnekte, toplamayı gerçekleştirmeden önce aleti sütundaki CustomerKey tabloyu karıştırmaya zorlamak için DISTRIBUTED_AGG sorgu ipucu kullanılır.

-- Uses AdventureWorksDW  
  
SELECT CustomerKey, SUM(SalesAmount) AS sas  
FROM FactInternetSales  
GROUP BY CustomerKey WITH (DISTRIBUTED_AGG)  
ORDER BY CustomerKey DESC;  

G. GROUP BY için Sözdizimi Çeşitlemeleri

Seçme listesinde toplama olmadığında, seçme listesindeki her sütunun GROUP BY listesine eklenmesi gerekir. Seçme listesindeki hesaplanan sütunlar GROUP BY listesinde listelenebilir, ancak gerekli değildir. Bunlar söz dizimsel olarak geçerli SELECT deyimlerine örnektir:

-- Uses AdventureWorks  
  
SELECT LastName, FirstName FROM DimCustomer GROUP BY LastName, FirstName;  
SELECT NumberCarsOwned FROM DimCustomer GROUP BY YearlyIncome, NumberCarsOwned;  
SELECT (SalesAmount + TaxAmt + Freight) AS TotalCost FROM FactInternetSales GROUP BY SalesAmount, TaxAmt, Freight;  
SELECT SalesAmount, SalesAmount*1.10 SalesTax FROM FactInternetSales GROUP BY SalesAmount;  
SELECT SalesAmount FROM FactInternetSales GROUP BY SalesAmount, SalesAmount*1.10;  

H. Birden çok GROUP BY ifadesiyle GROUP BY kullanma

Aşağıdaki örnek, sonuçları birden çok GROUP BY ölçüt kullanarak gruplar. Her OrderDateKey grubun içinde ile ayırt DueDateKeyedilebilen alt gruplar varsa, sonuç kümesi için yeni bir gruplandırma tanımlanır.

-- Uses AdventureWorks  
  
SELECT OrderDateKey, DueDateKey, SUM(SalesAmount) AS TotalSales   
FROM FactInternetSales
GROUP BY OrderDateKey, DueDateKey   
ORDER BY OrderDateKey;  

I. HAVING yan tümcesi ile GROUP BY yan tümcesi kullanma

Aşağıdaki örnek, yan tümcesinde oluşturulan ve sonuç kümesine HAVING eklenmesi gereken grupları belirtmek için yan tümcesini kullanırGROUP BY. Sonuçlara yalnızca 2004 veya sonraki bir tarihte sipariş tarihleri olan gruplar dahil edilecek.

-- Uses AdventureWorks  
  
SELECT OrderDateKey, SUM(SalesAmount) AS TotalSales   
FROM FactInternetSales  
GROUP BY OrderDateKey   
HAVING OrderDateKey > 20040000   
ORDER BY OrderDateKey;  

Ayrıca Bkz.

GROUPING_ID (Transact-SQL)
GRUPLAŞMA (Transact-SQL)
SEÇ (Transact-SQL)
SELECT İfadesi (Transact-SQL)