SQL Grup fonksiyonlarında HAVING ile Grup Koşulu Belirtme

Bu dersimizde SQL SELECT ile birlikte COUNT fonksiyonu kullanımını inceleyeceğiz. COUNT kelimesi ingilizce sayma anlamına gelir. Örneğin bir tabloda kaç kayıt olduğunu aşağıdaki gibi bir sorgu ile anlayabiliriz.

SELECT COUNT(*) FROM tblpersonel

Burada * yerine tablodaki primary key(birincil anahtar) olan alanı da koyabilirsiniz.

SELECT COUNT(personelID) FROM tblpersonel 

Personel tablomuzda şu an 12 kayıt var, yukarıdaki sorguların sonucu 12 dönecektir.



Departman tablomuz da aşağıdaki gibi olsun.



Şimdi de her bir departmanda kaç personelimizin çalıştığını görelim.

SELECT d.DEPARTMAN,  COUNT(p.personelID)
FROM tblpersonel p,
tbldepartman d
WHERE p.departmanID =
d.departmanID 
GROUP BY d.DEPARTMAN


 
Her bir departmanda kaç personelin çalıtığını böylece öğrenmiş olduk, peki Çalışan sayısı 3'ün üzerinde olan departmanları nasıl listeleriz? Bunun için HAVING kullanımından yararlanacağız. 

SELECT d.DEPARTMAN,  
COUNT(p.personelID) AS 'Çalışan Sayısı'
FROM tblpersonel p, tbldepartman d
WHERE p.departmanID =d.departmanID 
GROUP BY d.DEPARTMAN
HAVING COUNT(p.personelID)>=3
 


Şimdi de departmanda çalışan sayısı 1 ile 3 arasında olan departmanları sayıları birlikte listeleyelim.

SELECT d.DEPARTMAN,  
COUNT(p.personelID) AS 'Çalışan Sayısı'
FROM tblpersonel p, tbldepartman d
WHERE p.departmanID =d.departmanID 
GROUP BY d.DEPARTMAN
HAVING COUNT(p.personelID)>=1
AND COUNT(p.personelID)<=3




Şimdi de Yönetim departmanı dışındaki departmanlardan çalışan sayısı 3'ten büyük olanları Azalan sırada listeleyelim.  

SELECT d.DEPARTMAN,   COUNT(p.personelID) AS 'Çalışan Sayısı'
FROM tblpersonel p, tbldepartman d
WHERE p.departmanID =d.departmanID  AND d.DEPARTMAN<>'Yönetim'
GROUP BY d.DEPARTMAN
HAVING COUNT(p.personelID)>=3
ORDER BY COUNT(p.personelID) DESC



 

Mutlu Kodlamalar,
Oğuzhan TAŞ
Kasım, 2018

Bookmark and Share