Sql Server

Sql Server min Fonksiyonu

Herkese merhaba, Sql Server yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda min() fonksiyonunu anlatacağım. Hadi başlayalım !

min() fonksiyonu bir tane parametre alıyor ve parametre olarak aldığı sütun içerisindeki en küçük değeri geri döndürüyor. En küçük değer derken sayısal bir sütun ise en küçük, metinsel bir sütun ise de alfabetik olarak en baştaki değeri söylüyor. Yani tablo içerisindeki bir sütunun içerisinde bulunan verileri arasındaki en küçük yada alfabetik olarak en baştaki veriyi söylüyor ve tüm tabloyu değil, sadece ilgili sütunu geriye döndürüyor. Ayrıca min() fonksiyonu where ile beraber kullanılamıyor çünkü where, min() gibi sütunlar üzerinde sayısal ve sıralama işlemlerini destekleyemiyor. Dolayısıyla min() fonksiyonunu sadece select ile bir tablo içinden seçim yapmak için kullanılmakta. min() fonksiyonunu kullanarak tablo içerisinden filtreleme yapmak için where yerine having kullanmak gerekiyor.

Örneğin int tipte id ve varchar tipte kitapAdi sütunları bulunan bir tablomuz olduğunu varsayalım. Bu tablo içerisinden min() fonksiyonu ile en küçük id’yi ve en küçük kitapAdi değerini getirmek için sırasıyla şu kodları yazmamız gerekiyor;

select min(id) from kitaplar;
select min(kitapAdi) from kitaplar;

min() fonksiyonunun bu şekilde kullanımında sadece tek veri döndürülmekte fakat çoklu veri döndürmek için group by ifadesini kullanmamız gerekiyor. Çünkü min() fonksiyonu normalde tek veri döndürüyor ama siz sorgu içerisinde min() fonksiyonunun yanına bir tane daha sütun adı yazarsanız yani çoklu veri gelsin istiyorum derseniz o zaman ortalık biraz karışıyor. Çünkü min() fonksiyonundan gelen verinin hangi satıra yazılacağına Sql Server karar veremiyor ve hata veriyor. Bunu önlemek için min() fonksiyonu ile beraber yazdığımız sütunu birde group by ile gruplarsak işte o zaman min() fonksiyonuda size çoklu cevap verebilir. Fakat vereceği çoklu veri, yaptığınız gruplama içerisindeki en küçük veri olacaktır. Örneğin kitaplar tablosunda id ve kitapAdi sütunlarını beraber getirelim.

select min(id), kitapAdi from kitaplar group by kitapAdi;

Gördüğünüz üzere id sütununu min() fonksiyonundan geçirdik ve ayrıca yanında birde kitapAdi sütunundaki verileri getir dedik. Son olarak kitapAdi sütununa göre gruplama yaparak min() fonksiyonunun kitapAdi sütunundaki gruplara göre çalışmasını istedik. Gruplar arasında çalıştığı için min() fonksiyonunun size getirdiği değerler tablodaki en küçük değer değil, üzerinde çalıştığı gruptaki en küçük değer olacaktır. Bu yüzden genelde tek başına kullanılmakta.

Başta da dediğim gibi min() fonksiyonu where ile beraber kullanılmayıp, having ile beraber kullanılmakta. where ifadesi min(), max(), sum() gibi fonksiyonları destekleyemediği için bu fonksiyonlar için özel olarak having ifadesi oluşturulmuş ve bu fonksiyonları kullanarak filtreleme yapmak istediğinizde where yerine having kullanmamız gerekiyor. having ile kullanabilmek için de group by ile beraber kullanmamız gerekiyor. Çünkü min() fonksiyonu belirli bir grup içerisindeki veriler arasından en küçük veriyi getirdiği için siz tüm veriler arasından en küçüğünü getiremiyorsunuz, belli bir sütuna göre grupladıktan sonra getirebiliyorsunuz. Ayrıca min() fonksiyonu ile filtreleme yapmak istediğinizde tablo içerisindeki getirmek istediğiniz sütunları da group by ile gruplamanız gerekmekte. Yani select ile hangi sütunları yazdıysanız aynı sütunları group by ile de yazmanız gerekiyor. Örneğin kitaplar tablomuzdan şöyle 2 tane örnek yapalım;

select kitapAdi from kitaplar group by kitapAdi having min(id) > 5;
select kitapAdi, yazar from kitaplar group by kitapAdi, yazar having min(id) < 15;

İlk satırda sadece kitapAdi sütununu getirmek istediğimiz için group by ile kitapAdi yazdık fakat ikinci satırda kitapAdi ve yazar sütunlarını getirmek istediğimiz için group by ile hem kitapAdi hemde yazar sütunlarını yazdık. Sonuçlar üzerinde filtreleme yapabilmek için de having ile istediğimiz filtreyi yazdık.

Evet Sql Server’da min() fonksiyonunun kullanımı bu kadardı, tüm Sql Server yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.

Skorumuz:
Oy Vermek İçin Tıklayın
[Toplam: 0 Ortalama: 0]

Bir cevap yazın

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

Başa dön tuşu