GROUP BY, SQL'de satırları ortak bir değere göre gruplayıp her grup için özet hesaplaman sağlar. Genelde COUNT, SUM, AVG gibi toplama fonksiyonlarıyla birlikte kullanılır.

Örnek tablo: siparisler

SELECT sehir, COUNT(*) AS adet
FROM siparisler
GROUP BY sehir;

Bu sorgu her şehir için kaç sipariş olduğunu döndürür.

Toplam ve ortalama

SELECT sehir, SUM(tutar) AS toplam, AVG(tutar) AS ortalama
FROM siparisler
GROUP BY sehir;

HAVING ile grup filtreleme

WHERE satırları filtreler; grupları filtrelemek için HAVING kullanılır:

SELECT sehir, COUNT(*) AS adet
FROM siparisler
GROUP BY sehir
HAVING COUNT(*) > 10;

Bu, yalnızca 10'dan fazla siparişi olan şehirleri gösterir. Kural: SELECT içinde topladığın dışındaki her sütun GROUP BY'da yer almalıdır.