SQL HAVING Nedir? Kullanımı Nasıldır? Örneklerle Anlatım
31.01.2021 22:01 25.497 Görüntülendi

SQL HAVING Nedir? Kullanımı Nasıldır? Örneklerle Anlatım

WHERE komutu gruplama fonksiyonları ile kullanılmadığından aynı görevi yapan HAVING komutu GRUOP BY ile kullanılması için getirilmiştir. Sadece GROUP BY komutu ile kullanılır.

SELECT sütun_adi
FROM tablo_adi
WHERE koşul
GROUP BY sütun_adi 
HAVING koşul
ORDER BY sütun_adi;

NOT: Yukarıda anlaşılır olması için türkçe karakter kullanılmıştır.Kod yazımlarında Türkçe karakter kullanmayınız.

Örnek veritabanı üzerinde deneyelim.

 

KullaniciID

Ad

Soyad

Adres

Sehir

Postakodu

Ulke

1

Safa

Dedeoğlu

Necmettin Erbakan Cad. no 8/1

İstanbul

34000

Türkiye

2

Fatih

Turab

İskele Cad. hastane sok.

Artvin

08300

Türkiye

3

John

Doupoint

Claremont Rd no:8/3

Newcastle

NE2 4AA

İngiltere

4

Gustavo

Alfaro

Cuero y Caicedo, Quito

New York

170129

Amerika

5

Abel

Gigli

Dagmada Waaberi 324/5

Moskova

Jh09010

Rusya

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

90

Ellen

Smith

2525 Massachusetts Avenue N W

Washington,DC

984

Amerika

SQL HAVING Örnekleri

Aşağıdaki SQL komutu, ülkelerdeki müşteri sayısını listeler. HAVING koşulu ile 7 den fazla olanları görüntülemek için sınırlanmıştır.

SELECT COUNT(KullaniciID), Ulke
FROM Musteriler
GROUP BY Ulke
HAVING COUNT(KullaniciID) > 7;

Sonuç çıktısı:

Sayı(KullaniciID)

Ulke

Türkiye

17

Amerika

8

Rusya

11

Çin 

13

 

Aşağıdaki SQL komutu, ülkelerdeki müşteri çoktan aza doğru sayısını listeler. Sadece 7 den fazla müşterisi olanları listeler.

SELECT COUNT(KullaniciID), Ulke
FROM Musteriler
GROUP BY Ulke
HAVING COUNT(KullaniciID) > 7;

Sonuç çıktısı:

Sayı(KullaniciID)

Ulke

Türkiye

17

Çin 

13

Rusya

11

Amerika

8

 

SQL JOIN, GROUP BY ve HAVING Komutlarını Birlikte kullanalım

Örnek tablolar üzerinde çalışalım.

SiparisID

KullaniciID

CalisanID

SiparisTarihi

TedarikciID

12312

2

5

07/1/2021

2

12342

5

7

12/1/2021

1

12354

8

2

15/1/2021

2

.

.

.



.

.

.

.

.

.

.

.

.

.

.

.

13254

4

3

29/1/2021

3

13425

6

9

03/1/2021

1

 

CalisanID

CalisanAdi

CalisanSoyadi

Dogumgunu

1

Frank

Cesanne

1969-12-04

2

John

Smith

1970-05-18

3

Mehmet

Efe

1974-08-04

.

.

.

.

.

.

.

.

.

.

.

.

12

Hans

Müller

1969-07-24

Aşağıdaki SQL komutu,10’dan fazla sipariş kaydeden çalışanları listeler:

SELECT Calisanlar.CalisanAd, COUNT(Siparisler.SiparisID) AS SiparisSayısı
FROM Siparisler INNER JOIN Calisanlar ON Siparisler.CalisanID = Calisanlar.CalisanID)
GROUP BY CalisanAd
HAVING COUNT(Siparisler.SiparisID) > 10;

Sonuç çıktısı:

CalisanAd

SiparisSayısı

Frank

27

Hans

24

Ayşe

21

John

17

Mehmet

12

 

İçerik: Yusuf Erdoğan