Bir sütun değerine karşılık 1'den fazla karşılık gelen sütunların gruplanması ile ilgili makalemiz.
Diyelimki elinizde bir ürün sistemi var (Bilgisayar, televizyon, beyaz eşya vs..). Bu sistemde raporlar almak istiyorsunuz. Mesela, "Televizyon kategorisinde kaç tane marka var?", "LG markalı kaç tane televizyon mevcut?" yada "Her bir kategoride kaç tane ürün mevcut?" gibi soruların karşılığı olarak GROUP BY ifadesi ile bu soruların cevaplarını bulmaya çalışalım.
Öncelikle, çok ayrıntıya girmeden basit bir tablo oluşturalım. Kategori, marka ve ürünün aynı tabloda yer aldığı bir tablo.

Ürünler Tablosu
CREATE Table tblUrunler
(
id INT PRIMARY KEY IDENTITY,
kategori NVARCHAR(50),
marka NVARCHAR(50),
urun_adi NVARCHAR(50)
)


İçerisine biraz kayıtlar ekleyelim
Eklenen Kayıtlar



Tablonun özetini çıkarırsak
- "Televizyon" ve "Notebook" olmak üzere toplamda 2 kategori mevcuttur.
- "LG", "Samsung", "Sharp", "Sony", "Panasonic", "ASUS" ve "HP" olmak üzere toplamda 7 marka mevcuttur.
- Toplamda ise 13 ürün mevcuttur.



Her bir markaya ait kaç tane ürün var?
SQL Sorgusu
SELECT
marka, COUNT(id) AS [Toplam Ürün]
FROM
tblUrunler
GROUP BY marka


Markaya Ait Ürün Sayısı





Her bir kategoriye ait kaç tane ürün var?
SQL Sorgusu
SELECT
kategori, COUNT(id) AS [Toplam Ürün]
FROM
tblUrunler
GROUP BY kategori


Kategoriye Ait Ürün Sayısı




Ürün Sayısı 2'den Fazla Markaları Bulalım
SQL Sorgusu
SELECT
marka, COUNT(id) AS [Toplam Ürün]
FROM
tblUrunler
GROUP BY marka
HAVING COUNT(id) > 2


Ürün Sayısı 2'den Fazla Markalar




Her bir kategoride kaç tane marka var?
SQL Sorgusu
SELECT
kategori, COUNT(DISTINCT marka) AS [Toplam Marka]
FROM
tblUrunler
GROUP BY kategori

Her Bir Kategoride Marka Sayısı




Kaynak: http://www.ontedi.com/sql/sqlde-group-by-kavrami