You are on page 1of 4

VER TABANI YNETM SSTEMLER I

BLM 10 Alako BURMA

10. SQL de GRUPLANDIRMA

10.1. GROUP BY (Gruplandr) Deyimi

GROUP BY yardmc szc bir alana gre kaytlar gruplamak iin


kullanlr. Genel kullanm aadaki gibidir.

SELECT [ DISTINCT | ALL ] <stun(lar)> FROM <tablo ad (lar)>


[ WHERE <art (lar)> ]
[ GROUP BY <stunlar>]

ekil 10.1.1. Group By Ekran-1

77
VER TABANI YNETM SSTEMLER I Alako BURMA

Maalar tablosunda bulunan personelin bazlarna group by ifadesini


aklamak zere 2. ve 3.aya ait maa bilgileri eklenmitir. Yukardaki ekranda yaplan
eklemeler sonunda 5 adet sorgu yaplmtr. Bunlar ve aklamalar aadaki
rnekte aklanmtr. Buradaki rneklerden de grld gibi bir sorguda birden
fazla fonksiyon bir arada kullanlabilmektedir.
rnek-1) SQL> select count(*) from maaslar;
Maaslar tablosunda bulunan toplam kayt says 58 olarak bulunmutur. Tabloda 58
personeler ait 1., 2. ve 3. ay maa bilgileri bulunmaktadr.
COUNT(*)
---------------
58
rnek-2)SQL>SELECT maasayi,COUNT(maas) from maaslar group by maasayi;
Her bir ay iin ka personele maa denildiini listeleyen sorgu.
MAASAYI COUNT(MAAS)
--------------- ---------------
1 29
2 18
3 11
rnek-3) SELECT maasayi,SUM(maas) FROM maaslar group by maasayi;
Her bir ay iin personele denen toplam maa miktarn hesaplayan sorgu.
MAASAYI SUM(MAAS)
--------------- ---------------
1 30935
2 18585
3 11950
rnek-4) SQL> SELECT maasayi, COUNT(maas), SUM(maas) FROM maaslar
group by maasayi;
Her bir ay iin ka personele, ne kadar toplam maa dendiini hesaplayan sorgu.
MAASAYI COUNT(MAAS) SUM(MAAS)
--------------- ------------------------------ --------------------
1 29 30935
2 18 18585
3 11 11950
rnek-5) SQL> SELECT maasayi, COUNT(maas), SUM(maas), AVG(maas)
FROM maaslar group by maasayi;
Her bir ay iin ka personele, ne kadar toplam maa dendii ve her ayn maa
ortalamasn hesaplayan sorgu.
MAASAYI COUNT(MAAS) SUM(MAAS) AVG(MAAS)
-------------- ------------------------- -------------------- ------------------------
1 29 30935 1066.724137931
2 18 18585 1032.5
3 11 11950 1086.3636363636

78
VER TABANI YNETM SSTEMLER I Alako BURMA

ekil 10.1.2. Group By Ekran-2


Yukardaki rnekte; personel tablosu birim koduna gre gruplandrma yaplarak her
bir birimde alan personel says listelenmitir.

ekil 10.1.3. Group By Ekran-3


Yukardaki rnekte; personel tablosu meslek koduna gre gruplandrma yaplarak her
bir meslek grubunda alan personel says listelenmitir.

10.2.HAVING (Sahip) Deyimi

Gruplandrarak kmeleme fonksiyonu kullanlrken, sorguda bir koulunda


verilmesi gerekiyorsa kullanlr. Bu durumda grup zerindeki hesaplamalarla ilgili
koul belirtilirken HAVING (SAHP) szc kullanlr. HAVING yardmc szc
GROUP BY yardmc szc ile gruplanan kaytlar zerinde kstlama yapma iine
yarar. Genel kullanm aadaki gibidir.
SELECT [ DISTINCT | ALL ] <stun(lar)> FROM <tablo ad (lar)>
[ WHERE <art (lar)> ]
[ GROUP BY <stunlar>]
[ HAVING < grup kstlamas>]

79
VER TABANI YNETM SSTEMLER I Alako BURMA

HAVING szc SELECT komutunda GROUP BY bulunmad zaman


geersizdir. HAVING szcn izleyen ifade iinde SUM, COUNT(*), AVG, MAX
yada MIN fonksiyonlarndan en az biri bulunmaldr. HAVING szc sadece
gruplanm veriler zerindeki ilemlerde geerlidir. WHERE szc bir tablonun tek
satrlar zerinde ilem yapan koullar iinde geerlidir. Baz durumlarda HAVING ve
WHERE szckleri ile birlikte SELECT komutu iinde kullanlabilir.

ekil 10.2.1. Having Ekran-1

rnek-1) SQL> SELECT maasayi, MAX(maas), AVG(maas) FROM maaslar


GROUP BY maasayi HAVING MAX( maas)>1200 ;
En yksek maan 1200 den fazla olduu aylardaki personele ait en yksek maa ve
ortalama maa listeler. Maa aylara gre gruplandrlmtr.
rnek-2) SQL> SELECT maasayi, MAX(maas), AVG(maas) FROM maaslar
GROUP BY maasayi HAVING MAX( maas)>1000 ;
En yksek maan 1000 den fazla olduu aylardaki personele ait en yksek maa ve
ortalama maa listeler. Maa aylara gre gruplandrlmtr.
rnek-3) SQL> SELECT bl_no, AVG (brt) FROM isciler WHERE cins= .T.
GROUP BY bl_no HAVING AVG (brt) > 9000000;
sci tablosu iinde her blmde erkek personele ait maalar iin ortalamann
9000000dan fazla olduu blmleri listeler. Bu tabloda cins isimli bir tablo alan
olduu ve onunda mantksal bir alan olarak tanmland varsaymtr. Mantksal
alann true olmas durumunda cinsiyetin erkek, false olmas durumunda cinsiyetin
bayan olduu varsaylarak sorgu yazlmtr. Mantksal veriler iin mmkn olabilen
sadece iki deer sz konusudur. DORU D(TRUE T), YANLI Y (FALSE F) ile
simgelenir. Mantksal alanlar .T. veya .F. olarak karlatrlrlar.

ekil 10.2.1. Having Ekran-2


rnek; isci tablosunda ikiden fazla kii tarafndan yaplan ilerin listesini verir.

80

You might also like