Menu

12 Eylül 2010 Pazar

GROUP BY ile Verilerin Gruplandirilmasi

SQL cumlelerinde verilerin nasil gruplandirilmasini istedigimizi GROUP BY ifadesi ile belirtiriz. Bunula ilgili olarak asagidakilere dikkat etmemiz gerekmektedir.
  • SQL cumlesinin SELECT kisminda kullanilan gruplama ifadeleri ve sabit degerler haricindeki tum sutunlar GROUP BY ifadesinde yer almalidir.
  • Eger GROUP BY ifadesi kullanilmaz ise SELECT kisminda sadece grup fonksiyonlari ve sabit degerler kullanilabilir. Gruplama tum kayitlar uzerinden yapilir.
  • SQL cumlesi calistirildiginda once veriler cekilir, daha sonra GROUP BY ifadesine gore gruplandirilir.
  • GROUP BY ifadesi kullanildigi zaman Oracle otomatik olarak kayitlari artan (ASC) sekilde siralar.
  • Sutun takma adlari GROUP BY ifadesinde kullanilmaz.
  • GROUP BY ifadesinde birden fazla sutun yada ifade kullanilabilir. Bu durumda tum kayitlar veritabaninda cekildikden sonra ilk once GROUP BY ifadesinde yeralan ilk sutun/ifadeye gore siralama yapilir. Daha sonra sirasiyla digerlerine gore gruplama yapilir.Sonuc olarak grup icinde grup olmus olur.
Asagidaki ornekde EMPLOYEES tablosundaki kayitlar HIRE_DATE (ise giris tarihl)`lerine gore gruplanarak ayni tarihte ise girmis kac kisi oldugu bulunmustur. Birinci SQL cumlesinde GROUP BY ifadesi kullanilmadigi halde  HIRE_DATE SQL cumlesinin SELECT kisminda kullanildigi icin hata vermistir. Ama ikini SQL`de bu hata giderilerek GROUP BY ifadesi ilave edilmis ve SQL calistirilmitir.
SELECT hire_date, count(*) FROM employees
SQL Error: ORA-00937: not a single-group group function

SELECT hire_date, count(*) FROM employees
      GROUP BY hire_date


HIRE_DATE                 COUNT(*)             
------------------------- ----------------------
07-12-02                  2                     
10-08-07                  1                    
08-03-08                  5                     
17-10-03                  1                    
15-10-07                  1                    
29-01-08                  3                     
30-01-05                  1                    
23-11-07                  1                    
04-03-04                  1                    
21-04-08                  2    

Hiç yorum yok:

Yorum Gönder