Bir değişiklik yapıp konuya hızlıca girmek istiyorum. Zaten başlık konuyu yeterince anlatıyor 🙂
Max fonksiyonu, adı üstünde, bir kolonun en büyük (maximum) değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonksiyonu kullanımına bakalım. Öncelikle isim ve yaş kolonlarına sahip bir antika tablosu tanımlayalım.
id |
isim |
yas |
1 |
Saat |
20 |
2 |
Mobilya |
29 |
3 |
Porselen |
50 |
4 |
Dolap |
13 |
Şimdide elimizde bulunan en eski antikayı bulalım.
SELECT MAX(yas) FROM antika
Sorgu sonucu karşımıza şu sonuç geliyor.
Görüldüğü gibi sorgu sonucunda en eski antikanın yaşını vermiş oldu. Şimdi işin içine bir de teklif tablosunu ekleyelim.
id |
ant_id |
teklif_miktarı |
teklifveren |
1 |
1 |
500 |
Hasan |
2 |
1 |
550 |
Münevver |
3 |
1 |
525 |
Mert |
4 |
2 |
1400 |
Mert |
5 |
2 |
1250 |
Münevver |
6 |
3 |
900 |
Hasan |
7 |
3 |
1050 |
Mert |
8 |
4 |
2000 |
Mert |
9 |
4 |
1800 |
Hasan |
Tabloda teklif hangi antikaya yapıldığını gösteren antika_id alanı, teklif miktarı ve teklif eden kişi tutuluyor. Şimdi de her bir antikaya verilen en yüksek teklifi bulalım.
SELECT antika.name, MAX(teklif.price) FROM antika LEFT OUTER JOIN teklif ON antika.id=teklif.ant_id GROUP BY antika.name ORDER BY antika.id
Bu sorguda ne yapmış olduk? antika ve teklif tablosunu birleştirerek bir antikaya verilmiş en yüksek teklif miktarını belirlemiş olduk. Sorgura GROUP BY terimi MAX fonksiyonunu (veya SUM gibi diğer fonksiyonların) antika isimleri özelinde çalıştırmamızı sağlıyor. Yani her bir antikanın sahip olduğu max teklifi bulmamızı sağlıyor. GROUP BY terimini kaldırırsak sadece en yüksek teklifi ve hangi antikaya ait olduğunu gösteren sonuç dönüyor.
Sorgu sonucu da şöyle;
İsim |
Teklif_miktarı |
Saat |
550 |
Mobilya |
1400 |
Porselen |
1050 |
Dolap |
2000 |
Herkese iyi çalışmalar.