Grup (GROUP) Fonksiyonları
Bazen belli bir koşula uygun belli bir topluluk için sorgu kurulabilir. Bu durumda grup işlemi yapılır. Örneğin departmanlara göre grup oluşturulup o departmandaki personel sayısı hesaplanabilir. Grup fonksiyonları sadece grup ifadeleriyle kullanılabilir.
Yazılımı:
1
2
3
4
5
6
7
8
9
10
11
|
SELECT kolonlar, grup fonksiyonları
FROM table
[WHERE kotul]
[GROUP BY grup_kolonu]
[HAVING group_kotulu]
[ORDER BY kolon]
|
GROUP BY satırı ile kolonlar üzerinde küçük gruplar oluşturulur.
HAVING satırı ile bu oluşturulan grup için grup koşulları tanımlanabilir. Where koşulundan farkı WHERE kayıt üzerinde koşul koyar, HAVING ise sadece grup kayıtları üzerinde koşul konabilir ve grup fonksiyonları kullanılabilir.
AVG(Kolon) : Belirtilen kolonun ortalamasını bulur.
COUNT(Kolon) : Belirtilen kolonun kayıt sayısını bulur. Count(*) ile o grupta oluşturulan kayıt sayısı hesaplanır. Null değerler için nvl fonksiyonu kullanılır. Çünkü kolon içindeki null değerler işleme alınmaz.
MAX(Kolon) : Belirtilen kolondaki kayıtların değerlerinin maksimum değerini bulur. Sayısal, karakteristik veya tarihsel olarak kendi içinde sıralama yapabilir.
MIN(Kolon) : Belirtilen kolondaki kayıtların değerlerinin minimum değerini bulur. Sayısal, karakteristik veya tarihsel olarak kendi içinde sıralama yapabilir.
SUM(Kolon) : Belirtilen kolondaki kayıtların değerlerinin sayısal toplamını bulur.
VARIANCE(Kolon) : Belirtilen kolondaki kayıtların değerlerinin matematiksel varyansını bulur.
Örneğin bir personel listesindeki departmanların ayrı ayrı departman içindeki personelin max ve min maas alan kişilerin maaslarını isteyelim;
1
2
3
4
5
|
SELECT Departman_id, MAX(Maas) , MIN(maas)
TABLE Personel
GROUP BY Departman_id
|
Veya 38 nolu departmandaki personel sayısını bulalım;
1
2
3
4
5
|
SELECT COUNT(*)
TABLE Personel
WHERE Departman_id = 38
|
Veya tüm departmanlardaki maaşlarının ortalaması 80.000.000 ‘den büyük olanların listesini oluşturalım;
1
2
3
4
5
6
7
|
SELECT Departman_id, AVG(Maas)
TABLE Personel
GROUP BY Departman_id
HAVING AVG(maas) > 80000000
|
Bazı durumlarda iç içe grup oluşturulması istenebilir. Bu durumda şu şekilde yazılır.
GROUP BY Kolon1, Kolon2 , …
Örneğin Departman adına ve personel yasına göre grup oluşturalım.
1
2
3
4
5
|
SELECT Departman_id, Yas
TABLE Personel
GROUP BY Departman_id, Yas
|
Leave a reply