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