SQL GROUP fonksiyonları kullanımı Group By

Önce Personel(tblpersonel), Maaş(tblMaas) ve Departman(tbldepartman) olmak üzere aşağıdaki gibi üç tane tablo oluşturalım. Maaş tablosunu önceki örneklerde personel tablosuna sadece bir MAAŞ alanı ekliyorduk, örneklerde kolaylık olsun diye böyle yapmıştık. Gerçek hayatta bir personel her ay maaş aldığı için ayrı bir maaş tablosuna ihtiyaç duyduk. 

Hangi personelin Maaş bilgisinin kaydedildiğini belirlemek için tblMaas tablosuna personelID alanı ekledik. Daha önce personelin hangi departmanda olduğunu belirtmek için tblpersonel tablosuna departmanID ekledik. 
Önce tablomuzda hangi veriler olduğunu görelim, bunun için daha önceki örneklerde yaptığımız gibi personelID üzerinden personel ve maaş tablolarını birleştirerek, sadece ihtiyacımız olan alanları listeliyoruz.



Aşağıdaki SQL SELECT sorgusu ile Personel, Maaş ve Departman tablolarını birleştiriyoruz. Birleştirme sorgusunu yazarken daha önceki derslerimizde de incelediğimiz birincil anahtar ve yabancı anahtar alanlarından yararlanacağız.

SELECT p.*, d.*, m.*
FROM
tblpersonel p, tblmaas m, 
tbldepartman d
WHERE p.personelID = m.personelID AND p.departmanID = d.departmanID

Yukarıdaki SQL Sorgusu üç tabloyu birleştirerek tüm alanlarıyla getirecektir.  Şimdi tüm alanları değil de sadece istediğimiz birkaç alanın gelmesini sağlayalım. Sadece personel ADI, SOYADI, DEPARTMAN, MAAS, TARIH bilgilerini aşağıdaki SQL sorgusu ile getirebiliriz.

SELECT p.ADI, p.SOYADI, d.DEPARTMAN, m.MAAS, m.TARIH 
FROM
tblpersonel p, tblmaas m, tbldepartman d
WHERE
p.personelID = m.personelID 
AND p.departmanID = d.departmanID
 
Şimdi personellerimizin şimdiye kadar aldığı tüm maaşlar toplamını listelemeAşağıdaki sorgu ile MAAŞ'ı 3000 ile 5000 arasında olan (3000 ve 5000 dahil) personelin tüm maaşlarını listeleyelim.

SELECT  p.ADI, p.SOYADI,d.DEPARTMAN, m.MAAS,m.TARIH
FROM 
tblpersonel p, tbldepartman d, tblmaas m 
WHERE p.departmanID = d.departmanID
AND m.personelID= p.personelID 
AND (m.MAAS>=3000 AND m.MAAS<=5000)


Şimdi de personellerin şimdiye aldıkları maaşlar toplamını personel ADI ve SOYADI bilgisi ile birlikte listelemek isteyelim. Bunun için grup fonkisyonlarından SUM fonksiyonunu kullanıyoruz. 

SELECT p.ADI,p.SOYADI,SUM(m.MAAS) FROM 
tblmaas m, tblpersonel p
WHERE
p.personelID=m.personelID
GROUP BY  p.ADI, p.SOYADI


Şimdi de TC Kimlik Numarası 12345678912 olan personelin 2018 yılında almış oldıuğu tüm maaşları listeyelim. 

SELECT p.ADI, p.SOYADI,  m.MAAS, m.TARIH
FROM
tblpersonel p, tblmaas m
WHERE
p.personelID = m.personelID
AND p.TCKIMLIKNO='12345678912'
AND (m.TARIH>='2018-01-01' AND m.TARIH<='2018-12-31')

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

 

Bookmark and Share