SQL Max Fonksiyonu Kullanımı

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.

MAX(yas)
50

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.

15 Comments

    SQL Max Fonksiyonu Kullanımı | Kara Kule

    […] değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonk… Devamı için : SQL Max Fonksiyonu Kullanımı Share this:TwitterFacebookLike this:BeğenBe the first to like this post. By ahmet orsorlu […]

    SQL Max Fonksiyonu Kullanımı | Boğaç Aslanyürek

    […] değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonk… Devamı için : SQL Max Fonksiyonu Kullanımı Like this:LikeBe the first to like this post. This entry was posted in Professional and tagged […]

    SQL Max Fonksiyonu Kullanımı « Musa Usta'nın Yeri

    […] değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonk… Devamı için : SQL Max Fonksiyonu Kullanımı Share this:TwitterFacebookLike this:BeğenBe the first to like this post.   Leave a […]

    SQL Max Fonksiyonu Kullanımı « Lé Blog

    […] değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonk… Devamı için : SQL Max Fonksiyonu Kullanımı Share :FacebookTwitterStumbleUponLinkedInLike this:LikeBe the first to like this […]

    SQL Max Fonksiyonu Kullanımı « kodluyorum

    […] değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonk… Devamı için : SQL Max Fonksiyonu Kullanımı Share this:TwitterFacebookLike this:BeğenBe the first to like this […]

    SQL Max Fonksiyonu Kullanımı | Gökhan Tunçkale | Blog

    […] değerini veriyor. Öncelikle basitçe tek tablo üzerinde max fonk… Devamı için : SQL Max Fonksiyonu Kullanımı ShareFacebookTwitterStumbleUponMoreTumblrRedditLinkedInDiggEmailPrintLike this:BeğenBe the first […]

    abdullah

    merhaba çıkan sorguda en yüksek teklifler listelenmiş en yüksek teklifleri kimler onlarla birlikte listeletebilirmiyiz

    örneğin

    saat 550 münevver
    mobilya 1400 mert

      Emre Macit

      Sorguda Select’ten sonra bir de teklifvereni çektiğimizde istediğiniz olacaktır.

      SELECT antika.name, MAX(teklif.price) , teklif.teklifveren FROM antika LEFT OUTER JOIN teklif ON antika.id=teklif.ant_id GROUP BY antika.name ORDER BY antika.id

        abdullah

        teklifvereni eklediğimizde hata alıyorum

        Column ‘teklif.teklifveren’ is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

        teklifvereni group by a da eklemem gerekiyor eklediğim zaman
        tüm liste geliyor maksimum teklifler gelmiyor

          Emre Macit

          tekrardan teklif tablosuna join atalım öyleyse. LEFT JOIN teklif as teklif2 ON (…) diyelim. Select kısmında da teklif2.teklifvereni çekelim?

            abdullah

            sorguyu tam olarak yazabilirmisiniz.

    Gökhan Tunçkale

    abdullah :

    sorguyu tam olarak yazabilirmisiniz.

    Bence, teklifverenler için ayrı bir tablo oluşturmamız daha mantıklı.
    Üçüncü bir tablo oluşturup 2 kere join atarak daha güzel bir modelleme yapmış oluruz.

      abdullah

      iç içe sorgu yazarak yapmak istediğim modellemeyi oluşturdum.
      tşk yardımınız için

        Emre Macit

        siz sorgunuzu yazabilir misiniz? benim çok kısıtlı vaktim oluyor da size yanıt veremedim.

    fatih

    abdullah :
    sorguyu tam olarak yazabilirmisiniz.

    Sorguda select ten sonra eklediğiniz kısmı group by kısmınada eklerseniz hata almazsınız.

    Şöyle ki
    SELECT antika.name, MAX(teklif.price) , teklif.teklifveren FROM antika LEFT OUTER JOIN teklif ON antika.id=teklif.ant_id GROUP BY antika.name,teklif.teklifveren ORDER BY antika.id

Bir Cevap Yazın