Eğitm Sayısı :532
AnasayfaMysql DersleriMysql Dersleri | Mysql Having Deyimi

Mysql Dersleri | Mysql Having Deyimi

Mysql Dersleri

Having deyimini Where deyimi gibi düşünebilirsiniz ama tamamen aynı değildir. Where deyiminden sonra biz fonksiyon çalıştıramıyoruz yani Where avg(vize) >30 şeklinde bir ifade kullanmıyoruz. Ama having de bunu yapabiliyoruz. Havin avg(vize)>30 şeklinde yazabiliyoruz . Ayrıca Having i biz group by deyimiyle beraber kullanıyoruz. Çünkü Havingi Groupby ile dönen sonuçları kısaltmak için kullanmaktayız.

Notlar Tablosu

notId ogrenciId dersId vize Final
1 1 1 60 45
2 2 3 69 75
3 3 3 56 45
4 3 5 67 89
5 4 2 80 51
6 5 5 60 45
7 6 4 26 60
8 7 2 90 45
9 8 1 60 56
10 9 2 54 45
11 4 3 58 98

Örnek – 1

Bu örneğimiz de öğrencilerin aldıkları derslere göre finallerinin ortalamasını aldık. Yani dersId ‘si 1 olanların final notları(45,56) bunların ortalamasını aldık ve çıkan ortalamaya göre sıralama yaptık.Peki biz bunu having ifadesiyle yapsaydık o zaman 2. örneğimizi inceyelim

dersId finalOrtalama
1 50.5000
2 47.0000
3 72.6667
4 60.0000
5 67.0000

Örnek – 2

Şimdi aynı örneği having de kullanarak yapalım. Final notu ortalaması 50 nin üzerindeki notları Group by ifadesiyle listeleyelim. Burada yapılan işlem şudur. Önce Group by ile dersId sütununa göre gruplama yapılır. Sonra bu grouplara göre final ortalamaları hesaplanır. Çıkan ortalamaya göre 50 ın üzerindeki notlar ekrana gelir. Aşağıdaki sonuçta da görüldüğü gibi 2 numaralı dersId sine sahip gelmedi çünkü ortalaması 50 nin altında .Şimdi bu sefer Where ifadesiyle yapalım aradaki farkı anlayalım. Örnek – 3 bakalım

dersId finalOrtalama
1 50.5000
3 72.6667
4 60.0000
5 67.0000

Örnek – 3

Burada having yerine where deyimini kullandığımızda gördüğünüz üzere final notu önce 50 üzeri olan notlar seçildi sonra bu notların ortalaması alındı ve sonra gruplandı iki örnek arasındaki temel fark budur. Where ifadesi önce şartına uyan satırlar getirir ve daha sonra gruplama işlemi yapar . Having de ise önce Gruplama işlemi yapılır ve having işleminde belirttiğimiz şartlar gerçekleşir.

dersId finalOrtalama
1 56.0000
2 51.0000
3 86.5000
4 60.0000
5 89.0000

Where ve Having İfadesinin Birlikte Kullanımı

Vize notu 50 nin üzerinde olanlar daha sonra bu 50 nin üzerinde olanları gruplama işlemi yapıp ortalaması final notuna göre ortalaması alındıktan sonra grupların final notu 50 nin üzerinde ise kayıtları getirecek . Aslında burada karışık pek birşey yok 2 tane şart koymuşuz gibi düşünebilirsiniz.

dersId finalOrtalama
1 50.5000
3 72.6667
5 67.0000
Paylaşmak Güzeldir :)
Mysql Dersleri | Gro
Kod Adı : Kodlama D

ademyalcin27@gmail.com

Oy
Henüz yorum yapılmadı . İlk sen neden yorum yapmayasın ?

Yorum yap

CAPTCHA (Şahıs Denetim Kodu) Resmi

*