MICROSOFT SQL SERVER

Ders Notları

 

Sql Order by ve Group by Komutlarının Kullanımı


Bazı durumlarda tablolardan seçtiğin verilerin belirli bir sıra ve düzen içerisinde olmasını isteyebilirsin. Örneğin seçilen verilerin son kayıt tarihlerine göre veya herhangi bir alan içerisindeki alfabetik sıraya göre dizilerek ele alınması gibi. Tabloda bulunan bir alana göre sıralama işlemi yapılmak istendiğinde SELECT ifadesi ile birlikte ORDER BY kullanarak seçilen kayıtların bir veya birden fazla alana göre sıralanması sağlanabilir

ORDER BY operatörü ile sonuçları istediğiniz sütuna göre dizdirebilirsiniz.

ORDER BY operatörü asc komutu ile sıralamayı azdan çoğa doğru yapar. Eğer sıralamanın çoktan aza doğru olmasını istersek DESC komutu operatöre eklenmesi yeterlidir.

select * from personel order by per_ad

personel tablomuzda personel isimlerini a dan z ye sıralar ve tüm kayıtlarıgösterir.

select * from personel order by per_soyad asc

yine personel tablomuzdaki kayıtlarımızı soyismine göre a dan z ye sıralar. asc kavramı bir üstteki örnekte olduğu gibi sıralamanın a-z olduğunu belirtir.

select per_ad from personel order by per_ad desc

personel adını z-a ya sıralar.

select per_ad,per_soyad from personel order by per_soyad desc

personel adını ve soyadını gösterir. gösterirke soyismine göre z-a ya sıralar.

ORDER BY ile bir alana göre sıralama işlemleri yapılabildiği gibi birden fazla alana göre de sıralama yapılabilmektedir.

select * from personel order by per_ad,per_soyad

ilk önce ada göre sıralama yapar.adı eşit olan personelleri ise ikinci yazdığımız alana göre sıralar

select * from personel order by per_ad , per_soyad desc


ada göre sırlara aynı olanların soyisimine göre z-a ya sırlar.

group by:

GROUP BY ifadesi sonuçları gruplandırır. Yani sonuç kümesini bir veya birden fazla kolona göre gruplar.

Bu dersimizde kullanacağımız veritabanımız:
satış tablosu
*veritabanı dosyasını indirmek için burayı tıklayınız.
*indirdiğiniz bu dosyayını içeriğini winrarla dışarı çıkartın.Daha sonra sql server'de object explorer panelinde database üzerinde sağ tıklayın ve attach komutu ile veritabanı dosyasını ekleyiniz.

select ulke from calisanlar group by ulke

komutuyla tablomuzda bulunan ülkeleri listeleri. sonuç:almanya,fransa,türkiye ve usa çıkacaktır.

ülkelerin ortalama maaşını bulalım
select ulke,AVG(maas) from calisanlar group by ulke


her ülkeden kaç kişi çalıştığını bulalım
select ulke,COUNT(*) as sayi from calisanlar group by ulke


bayan ve erkek işcilerin ortalama maaşlarını bulalım
select cinsiyet,AVG(maas) as sayi from calisanlar group by cinsiyet


GROUP BY ifadesinden sonra birden fazla alan kullanabiliriz. Örneğin kayıtları önce ülkelere göre gruplayıp sonra her bir grubu kendi içinde şehirlere göre gruplamak istesek:

select ulke,sehir from calisanlar group by ulke,sehir


Türkiye dışındaki gruplarda tek bir şehir varken, Türkiye grubunun da kendi içinde 5 gruba ayrıldığına dikkat edin. Her bir gruba ait kaç adet çalışan olduğunu görmek istersek sorguya ufak bir ekleme yapmamız yeterli olur:
--select ulke,sehir,COUNT(*) as sayi from calisanlar group by ulke,sehir


Şimdi de her ülke için bayan ve erkek çalışanların sayısını ve yaş ortalamalarını bulalım:
--select ulke,cinsiyet,AVG(yas),COUNT(*) from calisanlar group by ulke,cinsiyet



GROUP BY İfadesini WHERE ifadesi ile birlikte kullanmak

Öncelikle WHERE ifadesinin sorguda her zaman group by’dan önce geldiğini belirtelim. Örneğin yukarıdaki sorguya maaşı 2000′den büyük olanlar gibi bir koşul ekleyelim.


--select ulke,cinsiyet,AVG(yas),COUNT(*) from calisanlar where maas>2000 group by ulke,cinsiyet

 

 

ÖNCEKİ KONU   SONRAKİ KONU


Web hosting by Somee.com