Ö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
Ürünler Tablosu Verileri
INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'LG', '22" LG22 Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'LG', '24" LG24 Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'LG', '32" LG32 Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'Samsung', '46" SMG46 Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'Sharp', '55" SRP55 Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'Sharp', '40" SRP40 Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'Sony', '42" SNY42 Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'Panasonic', '36" PNS36 Plazma Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Televizyon', 'Panasonic', '39" PNS39 OLED Televizyon') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Notebook', 'ASUS', 'i7 AS Notebook') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Notebook', 'ASUS', 'i5 AS Notebook') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Notebook', 'HP', 'i7 HP Notebook') INSERT INTO tblUrunler (kategori, marka, urun_adi) VALUES ('Notebook', 'HP', 'i5 HP Notebook')
Eklenen Kayıtlar
![SQL'de Group By Kavramı](/_d/icerik-dosyalar/180/1.png)
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.
Görüldüğü gibi tekrar eden markalar var. Peki tekrarsız bir şekilde markaları nasıl listeleriz?
Markaları Listeleyelim.
SQL SorgusuSELECT marka FROM tblUrunler GROUP BY marka
Kategoriler
![SQL'de Group By Kavramı](/_d/icerik-dosyalar/180/1a.png)
Her bir markaya ait kaç tane ürün var?
SQL SorgusuSELECT marka, COUNT(id) AS [Toplam Ürün] FROM tblUrunler GROUP BY markaMarkaya Ait Ürün Sayısı
![SQL'de Group By Kavramı](/_d/icerik-dosyalar/180/2.png)
Her bir kategoriye ait kaç tane ürün var?
SQL SorgusuSELECT kategori, COUNT(id) AS [Toplam Ürün] FROM tblUrunler GROUP BY kategoriKategoriye Ait Ürün Sayısı
![SQL'de Group By Kavramı](/_d/icerik-dosyalar/180/3.png)
Ürün Sayısı 2'den Fazla Markaları Bulalım
SQL SorgusuSELECT marka, COUNT(id) AS [Toplam Ürün] FROM tblUrunler GROUP BY marka HAVING COUNT(id) > 2Ürün Sayısı 2'den Fazla Markalar
![SQL'de Group By Kavramı](/_d/icerik-dosyalar/180/4.png)
Her bir kategoride kaç tane marka var?
SQL SorgusuSELECT kategori, COUNT(DISTINCT marka) AS [Toplam Marka] FROM tblUrunler GROUP BY kategori