4.1 Gruplandırma sütunları

Ayrıca çok önemli olan, kayıtları gruplandırırsanız, bölümde SELECTyalnızca verilerin gruplandırıldığı sütunları belirtebilmenizdir.

Senyapamamakbir tür sorgusu yazın ve bölümde adSELECT sütununu belirtin :

SELECT brand, name
FROM product
GROUP BY brand

Ürün tablosunda ad alanına sahip bir dizi satırınız var ve burada hangi satırı değiştirmeniz gerektiği açık değil. Tekrar düşünün: Her markanın ürün sayısını ve ortaya çıkan tablonun ürünün adını nasıl alabileceğini bilmek istiyorsunuz?

operatörünü kullanırsanız GROUP BY, sonucunuzda normal satırlar olamaz, yalnızca verilerin gruplandırıldığı sütunlar ve "hesaplanan sütunlar", örn.COUNT(*)

4.2 Hesaplanan sütunlara göre gruplama

Ancak birden çok sütuna ve hatta hesaplanan sütunlara göre gruplandırabilirsiniz. Örnek:

SELECT
YEAR(join_date) AS hire_year,
COUNT(*) AS total
FROM employee
GROUP BY hire_year

Ve bu sorgunun sonucu:

kiralama_yılı Toplam
2012 1
2013 1
2014 1
2015 2
2018 1

Talebimizi inceleyelim.

Çalışan tablosunda , her çalışanın benzersiz bir işe alım tarihi vardır, bu nedenle verileri buna göre gruplandırmak işe yaramaz - her tarih için bir kayıt olur ve gruplandırma pek mantıklı olmaz. Ancak işe alım tarihinden işe alım yılına geçersek, o zaman şirketin aynı yıl içinde birkaç çalışanı işe aldığı bir durum olabilir.

Gruplamadan önce bu tablonun nasıl görüneceğine tekrar bakalım:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	join_date
FROM employee

Ve bu sorgunun sonucu:

İD isim kiralama_yılı katılmak_tarihi
1 İvanov İvan 2012 2012-06-30
2 Petrov Petr 2013 2013-08-12
3 İvanov Sergey 2014 2014-01-01
4 Rabinovich Moisha 2015 2015-05-12
5 Kirienko Anastasia 2015 2015-10-10
6 Vaska 2018 2018-11-11

Ancak ortaya çıkan bu tablo, kiralama_yılına göre gruplandırılabilir ve belirli bir yılda kaç kişinin işe alındığını öğrenebilir.

4.3 Birden çok sütuna göre gruplama

Şimdi her yılın her ayında kaç çalışanı işe aldığımızı bulmaya çalışalım. Bunu yapmak için, sorguya aynı anda bir değil, iki hesaplanmış alan eklememiz gerekir - kiralama yılı (hire_year) ve kiralama ayı (hire_month).

Şöyle bir sorgu yazalım:

SELECT
 	id,
 	name,
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	join_date
FROM employee

Ve bu sorgunun sonucu:

İD isim kiralama_yılı kiralama_ay katılmak_tarihi
1 İvanov İvan 2012 6 2012-06-30
2 Petrov Petr 2013 8 2013-08-12
3 İvanov Sergey 2014 1 2014-01-01
4 Rabinovich Moisha 2015 5 2015-05-12
5 Kirienko Anastasia 2015 10 2015-10-10
6 Vaska 2018 on bir 2018-11-11

Bu sonuç tablosundaki verileri aya göre gruplandırırsak, işe alınan yıldan bağımsız olarak insanları gruplara ayırmış oluruz. Sonuç tablosunda üç sütun olması gerekiyor: yıl, ay ve işe alınan çalışan sayısı.

Bunu yapmak için operatörden sonra GROUP BYbir değil iki sütunun adını kullanmanız gerekir. Örnek:

SELECT
 	YEAR(join_date) AS hire_year,
 	MONTH(join_date) AS hire_month,
 	COUNT(*) AS total
FROM employee
GROUP BY hire_year, hire_month

Ve bu sorgunun sonucu:

kiralama_yılı kiralama_ay Toplam
2012 6 1
2013 8 1
2014 1 1
2015 5 1
2015 10 1
2018 on bir 1

Tabloda çok az kaydımız var, dolayısıyla toplam sütununda her yerde birimler var. Bu arada, ne kadar çok sütunu gruplandırırsak sonuçta o kadar çok satırımız olacağına dikkat edin.