2012/12/20

SQL Grup Fonksiyonları



    Grup fonksiyonları tek kayıt fonksiyonların aksine her bir kayıt için değil her bir grup için bir kez çalıştırılır.Grup fonksiyonları tek kayıt fonksiyonlarından farklı olarak bir veye daha fazla girdi değeri alır .Null değeri dikkate almaz ve genelde null dönürmezler. Şimdi de bir kaç tane grup fonksiyonunu anlatmaya çalışalım;
  • Distinct; Aynı değere sahip kayıtların sadece bir kez değerlendirmeye alır;
  • Avg; Aritmatik ortalamayı verir.
  • Count; Null olmayan değerlerin sayısını verir.
  • Grouping; Özetlenmiş kayıtlar için 1, özetlenmemiş kayıtlar için 0 değeri döndürüler.
  • Group_id; Her bir grubu belirtilen bir belirteç değeri döndürür.
  • Max; En büyük değeri döndürür.
  • Min; En küçük değeri döndürür.
  • Sum; Aritmatik toplamı verir.

 Şimdi ise bu grup fonksiyonlarından bazılarına örnekler verelim;

Avg; Aritmatik ortalamayı verir.
  •    SQL>select avg(ucret) from employees;
  •    SQL> select bolum_id, avg(ucret) from personeller group by bolum_id order by avg(ucret);

 Count; Null olmayan değerlerin sayısını verir.
  •    SQL> select count (distinct bolum_id)  from personeller;

 Max; En büyük değeri döndürür.
  •     SQL>select max (ucret) from personeller;    

  Min; En küçük değeri döndürür.
  •      SQL> select min(ucret) from personeller;

  Sum; Aritmatik toplamı verir.
  •       SQL> select sum (*) from employees;

 GROUP BY İLE VERİLERİN GRUPLANDIRILMASI;
    Gruplanmiş veriler üzerinde işlem yapar. SQL cümlelerinde veriler gruplanmasını istediğimiz group by  ifadesi ile belirtiriz.
  • Sql cümlesinin select kısmında kullanılan gruplama ifadeleri ve sabit değerler haricindeki tüm sütunlar group by ifadesi yer almalıdır.
  • Eğer group by ifadesi kullanılmazsa select kısmında sadece grup fonksiyonları ve sabit değerler kullanılır.
  • Sql cümlesi caliştığında önce veriler çekilir, daha sonra group by ifadesi ile gruplandırılır.
  • SQL> select ise_giris_tarih,  count (*) from personeller group by ise_giris_tarih;

HAVING İLE GRUPLANMIŞ VERİLERİN SINIRLANDIRILMASI;
  Gruplamada where kullanılmaz onun yerine having kelimesinden yaralanılır ve şartlar havingden sonra yazılır.
  •   SQL> select bolum_id , count(*) from personeller group by bolum_id having count (*)<3;

CUBE VE ROLLUP İLE GRUPLANMIŞ VERİLERİN  GRUPLANMASI;
   Cube ve rollup grup by kısmında kullanılır.
ROLLUP;
     Gruplaması yapıldığı zaman sorgu sonucundaki çıktı normal gruplama sonucunda dönen kayıtlar ile birlikte bu kayıtların gruplama ifadesine göre ara toplamları olur. Sütunların sıralaması önemlidir.
  •  SQL> select bolum_id, gorev_id, sum (ucret) from personeller grup by rollup (bolum_id,gorev_id);

CUBE;
      Gruplaması yapıldığı zaman sorgu sonucundaki çıktı normal gruplama sonucu dönen kayıtlar ile birlikte sadece sütunların sıralaması göre oluşan hiyerarsik ara toplamlar değil,bu kayıtların gruplama ifadesine göre olabilecek tüm kombinasyonların ara toplamları üretilir.Bu nedenle cube operatörü kullanıldığı zaman sıralamanın pek bir önemi yoktur.
    


           


Hiç yorum yok:

Yorum Gönder