Group By ile Cube ve Rollup ifadelerinin Kullanilmasi – Ara Toplam Hesaplama

GROUP BY ile  Cube ve Rollup ifadelerinin kullanilmasi

Bildigimiz gibi group by ifadesi istedigimiz kolonlara göre veri setimizi gruplar. Bu makalemizde group by deyimine fazla deginmeyecegiz. Group by ile grupladigimiz bir veri setinde ara toplamlari bulmak için kullanilan cube ve rollup ifadelerini inceleyecegiz.

Cube ve Rollup deyimleri örnek ile anlayacak olursak

Örnegin asagidaki gibi bir tablomuz var;

Cins

Sehir

Adet

Köpek

Ankara

25

Kedi

Ankara

32

Tavsan

Ankara

8

Köpek

Konya

10

Kedi

Konya

21

Tavsan

Konya

4

Köpek

Yozgat

100

Kedi

Yozgat

50

Tavsan

Yozgat

18

Köpek

Ankara

5

Kedi

Konya

13

Tavsan

Yozgat

18

Köpek

Konya

6

 

Bu tablo için group by kullanarak verileri çekecek olursak;

SELECT

         Cins

      ,Sehir

      ,sum(Adet) as Adet

FROM [EvcilHayvan]

group by Cins,Sehir


Sorgu sonucu:

Cins

Sehir

Adet

Kedi

Ankara

32

Köpek

Ankara

30

Tavsan

Ankara

8

Kedi

Konya

34

Köpek

Konya

16

Tavsan

Konya

4

Kedi

Yozgat

50

Köpek

Yozgat

100

Tavsan

Yozgat

36


Gördügünüz gibi Cins ve Sehir bazinda hayvan adetleri gruplanarak sonuca yansidi.

Ayni tabloya rollup kullanarak group by yaparsak;

.

SELECT

         Cins

      ,Sehir

      ,sum(Adet) as Adet

FROM [EvcilHayvan]

group by Cins,Sehir

with rollup


Sorgu sonucu

Cins

Sehir

Adet

Kedi

Ankara

32

Kedi

Konya

34

Kedi

Yozgat

50

Kedi

NULL

116

Köpek

Ankara

30

Köpek

Konya

16

Köpek

Yozgat

100

Köpek

NULL

146

Tavsan

Ankara

8

Tavsan

Konya

4

Tavsan

Yozgat

36

Tavsan

NULL

48

NULL

NULL

310


Yukaridaki sonuçta görebileceginiz gibi rollup ifadesi her hayvan cinsi için Sehir ayrimi olmadan(sehir alanlari null geliyor) toplam kaç adet olduklari bilgisini de getirdi. Kisacasi ara toplamlari buldu. Ayrica sonuç tablosunun en sonunda cins ve sehir ayrimi olmadan topla kaç adet hayvan oldugu bilgisi de geldi.

Simdi ayni sorguyu cube ifadesi ile çalistirirsak ne olur;

SELECT

         Cins

      ,Sehir

      ,sum(Adet) as Adet

FROM [EvcilHayvan]

group by Cins,Sehir

with cube


Sorgu sonucu:

Cins

Sehir

Adet

Kedi

Ankara

32

Köpek

Ankara

30

Tavsan

Ankara

8

NULL

Ankara

70

Kedi

Konya

34

Köpek

Konya

16

Tavsan

Konya

4

NULL

Konya

54

Kedi

Yozgat

50

Köpek

Yozgat

100

Tavsan

Yozgat

36

NULL

Yozgat

186

NULL

NULL

310

Kedi

NULL

116

Köpek

NULL

146

Tavsan

NULL

48

 
Dikkat ederseniz rollupda sadece sehir kolonu null gelmisti yani cinsler için ara toplamlari bulmustu, cube ise group by içinde kullanilan tüm kolonlar için ara toplamlari buldu. Yukarida gördügümüz gibi Her cinsten toplam kaç havyan var ve her sehirde cins ayrimi olmadan kaç hayvan var bilgileri sorgu sonucuna eklendi.
.

 

 

 

4 thoughts on “Group By ile Cube ve Rollup ifadelerinin Kullanilmasi – Ara Toplam Hesaplama

  1. Asagidaki sekilde en performansli olur Mehmet Yilmaz..

    SELECT Cins,Sehir, MAX(Adet) as Adet

    FROM [EvcilHayvan]

  2.  merhaba,

    her sehir için en çok hangi hayvandan ve kaç tane var sorusunun cevabini asagidaki sorgu ile alabiliriz.

     

     

    WITH Sirala AS

    (

    select Sira = (row_number() over(partition by Sehir order by Sehir,Cins,sum(Adet)))

    , Sehir,Cins,sum(Adet) TAdet from EvcilHayvan

    group by Sehir,Cins

    SELECT * 

    FROM Sirala 

    WHERE Sira =  1

     

  3. Peki hocam, hangi sehirlerde en çok hangi hayvan varsa onlari listelemek nasil olur (en performansli)

    sonuç asagidaki gibi çikmali.

    Kedi Ankara 32
    Kedi Konya 36
    Köpek Yozgat 100

     

mskunt için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir