SQL Having Kullanımı

SQL Having Kullanımı ndan şöyle bahsedelim. Bir sorguda aggregate fonksiyonu kullanıldığı durumda bu fonksiyonun döndüreceği sonucu bir filtre olarak kullanmak istersek bunu where ifadesinde kullanamıyoruz. Bu durumda Having ifadesini kullanmamız gerekiyor. Having ifadesi group by ifadesinden sonra kullanılmalıdır.

Yine anlaşılması için DB de hazır bulunan employees tablosu üzerinden bir örnek yapalım;

Bu örneği şu şekilde analiz edelim;

Having ifadesini kullanmadan önce department_id bazında sorgu gruplanmıştı. Biz de bu departmanlarda çalışan toplam çalışanları görmek istedik. Department_id nin yanına count(1) fonksiyonunu kullanarak saydırmak istedik. Ama group koşullarına göre select ifadesinde kullanılan tüm kolonları group by ifadesinde de kullanmamız gerekiyordu. Bu durumda bir fonksiyonu group by ifadesi içerisinde kullanamıyoruz, bunun yerine having ifadesi içerisinde kullanabiliyoruz.

Having kullanımı iş dünyasında genelde unique kolonda çoklama var mı yok mu anlamak için kullanılır. Bunun için de bir örnek yapalım. Employees tablosunda unique olarak bildiğimiz employee_id kolonunda bir çoklama var mı yok mu görelim;

Sorguda having count(1)>1 filtresi ile 1 den büyük olan dataları görmek istedik. Eğer herhangi bir id için duplike kayıt olmuş olsaydı; bu durumda filtre karşılanmış olacaktı ve sorgu sonucunda dönmüş olacaktı. Biz de bu durumda bu alan unique değil demiş olacaktık.

SQL Having Kullanımı yazımda anlatacaklarım bu kadardı. Umarım anlaşılmıştır ve faydalı olmuştur. Herkese iyi çalışmalar dilerim 🙂

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir