Basit bir örnek alabiliriz.
TableA
Aşağıdaki değerlerle adlandırılmış bir tablo düşünün :
id firstname lastname Mark
-------------------------------------------------------------------
1 arun prasanth 40
2 ann antony 45
3 sruthy abc 41
6 new abc 47
1 arun prasanth 45
1 arun prasanth 49
2 ann antony 49
GROUP BY
SQL GROUP BY deyimi, bir SELECT deyiminde birden çok kayıtta veri toplamak ve sonuçları bir veya daha fazla sütuna göre gruplamak için kullanılabilir.
Daha basit bir deyişle, GROUP BY deyimi, sonuç kümesini bir veya daha fazla sütuna göre gruplandırmak için toplama işlevleriyle birlikte kullanılır.
Sözdizimi:
SELECT expression1, expression2, ... expression_n,
aggregate_function (aggregate_expression)
FROM tables
WHERE conditions
GROUP BY expression1, expression2, ... expression_n;
GROUP BY
Masamıza başvurabiliriz :
select SUM(Mark)marksum,firstname from TableA
group by id,firstName
Sonuçlar:
marksum firstname
----------------
94 ann
134 arun
47 new
41 sruthy
Gerçek tablomuzda 7 satır var ve uyguladığımızda GROUP BY id
, sunucu sonuçları aşağıdakilere göre gruplandırıyor id
:
Basit bir ifadeyle:
burada GROUP BY
normalde Sum()
, her bir satır için toplanarak ve hesaplanarak döndürülen satır sayısını azaltır .
PARTITION BY
PARTITION BY bölümüne gitmeden önce, OVER
maddeye bakalım :
MSDN tanımına göre:
OVER yan tümcesi, sorgu sonuç kümesindeki bir pencereyi veya kullanıcı tarafından belirtilen satır kümesini tanımlar. Bir pencere işlevi, penceredeki her satır için bir değer hesaplar. OVER yan tümcesini, hareketli ortalamalar, kümülatif toplamalar, çalışan toplamlar veya grup başına en üstteki N gibi toplanmış değerleri hesaplamak için işlevlerle birlikte kullanabilirsiniz.
PARTITION BY, döndürülen satır sayısını azaltmaz.
PARTITION BY öğesini örnek tablonuza uygulayabiliriz:
SELECT SUM(Mark) OVER (PARTITION BY id) AS marksum, firstname FROM TableA
Sonuç:
marksum firstname
-------------------
134 arun
134 arun
134 arun
94 ann
94 ann
41 sruthy
47 new
Sonuçlara bakın - GROUP BY'ın aksine satırları bölümler ve tüm satırları döndürür .