SQL Server Verileri Gruplayarak Analiz İşlemleri | Sql Group By
Herkeze iyi günler arkadaşlar
Bu makalemiz de sizlere Tsql ile Grup Fonksiyonlarını göstereceğim.
Şimdi geçelim konumuza;
Kayıtların filtrelenmesinde kullanılan karşılaştırma operatörleri tanıtılarak her biri için açıklayıcı örnekler verdik.
Verilerin istatistiksel analiz için nasıl gruplanacağı ve gruplanmış veriler üzerinde bazı hesaplama (gruplama) fonksiyonlarının nasıl işletileceği konuları göstereceğiz.
Gruplama fonksiyonlarının kullanım kuralları işlenirken her bir fonksiyonun parametre olarak alabileceği veri türüne değineceğiz.
Sum, Avg : Sadece sayısal veriler için çalışabilir.
Max, Min : Metinsel ve tarihsel veriler için çalışabilir.
Count() : Fonksiyonu ise tüm veri türleriyle çalışabilir.
Count() fonksiyonunun diğer gruplama fonksiyonlarından farklı olduğu diğer bir konu ise parametre olarak “*” (yıldız) karakterini de alabilmesidir.
Gruplama fonksiyonlarının sütun adını parametre olarak kullandığı durumda “Distinct” ve “All” deyimlerinden biri sütun adından önce tercihen kullanılabilmektedir.
Varsayılan olarak “All” deyimi kabul edilmektedir.
Yani herhangi bir deyim kullanılmadığında tüm değerler hesaplamaya katılmaktadır.
Distinct kullanıldığında ise aynı olan değerler sadece bir kere hesaplamaya katılmaktadır. “Select” cümlesi içinde koşul belirtilirken, yani satırlar filtrelenirken, where operatöründen faydalanılır.
Ancak koşul ifadesi içinde gruplama fonksiyonundan dönen değer kullanılacaksa, bu koşul ifadesinin having anahtar sözcüğünden sonra kullanılması gerekmektedir.
“Select” cümlesi kurulurken yazım kurallarından bahsedilecek ve anahtar deyimlerin hangi sırayla cümle içinde yer alması gerektiği kurallarına değinilecektir.
Veriler gruplanmadan da gruplama fonksiyonlarının kullanılabilmektedir.
Verilerin birden fazla alana göre nasıl gruplanacağı ve gruplu verilerin nasıl görüntülenebileceğine de değinildikten sonra son olarak gruplama fonksiyonlarından dönen değerler üzerinden nasıl koşul tanımlanacağı detaylı olarak incelenecektir.
VERİLERİ GRUPLAYARAK ANALİZ ETMEK
Max:
Mın:
Eğer Burada biz başka bir kolon listelemek istersek "Group By" koymadığımız için bize şöyle bir ahta verecektir.
Hata:Msg 8120, Level 16, State 1, Line 4
Column 'Kitapverileri.urun_adi' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Şimdi ise diğer örneklerimizi kontrol edelim:
BİRDEN FAZLA SÜTUNA GÖRE GRUPLAMA
GRUP KOŞULLARININ KULLANIMI
Operatörlerin sorguda yazılış sırasının değiştirilmesi sorgunun çalışmamasına sebep olacaktır.
“Select … From …” ifadesi ile getirilen kayıtlar için, “Where …” ifadesi ile şart tanımlanabildiğini görmüştük.
“Group By … ” ifadesi ile gruplamaya tabi tutulan kayıtlar için gruplama fonksiyonları ile ilgili koşullar da “Having …” ifadesi ile tanımlanmaktadır.
Listelenecek kayıtlar ve kolonlar belirlendikten sonra istenirse kayıtlar üzerinde sıralama yapılabilmektedir. Dolayısıyla “Order By …” ifadesi sorgu yazımında en son gelmektedir.
“Having” operatörünün kullanımıyla ilgili dikkat edilecek hususlardan biri de “Where” operatörüyle tanımlanan kısıtlar “Having” operatörü içinde de yer alabilirken “Having” operatörü içinde tanımlanması gereken kısıtların “Where” operatörü ile kullanılmasının hataya sebep olmasıdır.
Gruplama fonksiyonları sonucu dönen değerler ile ilgili kısıtlar sadece “Having” operatörü ile tanımlanabilmektedir.
Diğer bir deyişle “Where” operatörüyle fiziksel veriler üzerinde filtre tanımlanabilirken “Having” operatörü, gruplama fonksiyonları ile hesaplanan sanal veriler üzerinde filtre tanımlanmasında kullanılmaktadır.
Şimdi de “Avg” fonksiyonundan dönen değerler ile filtre uygulamasına bir örnek verelim. Daha önce “Sınav_Id” bilgisi 5 olan sınavdan alınan notların ortalamasını alan SQL kod örneğini yazmıştık ve hesaplanan değerin 52 olduğunu görmüştük. Şimdi de sınav not ortalaması 52’den büyük olan sınavların ortalamalarını görüntüleyelim.
Hiç yorum yok
Yorum Gönder