Menu
Coddy logo textTech

ROW_NUMBER function

Coddy'nin SQL Journey'sinin Temeller bölümünün bir parçası. Ders 57 / 72.

Pencere işlevleri (window functions), geçerli satırla ilişkili bir dizi tablo satırı genelinde hesaplamalar gerçekleştirir. Normal toplama (aggregate) işlevlerinin aksine, pencere işlevleri sonuçları tek bir satıra indirgemez.

Özellikle şunları yapmanız gerektiğinde oldukça kullanışlıdırlar:

  • Kümülâtif toplamları hesaplamak
  • Gruplar içindeki ögeleri sıralamak
  • Mevcut satırları önceki/sonraki satırlarla karşılaştırmak
  • Zaman aralıklarındaki eğilimleri analiz etmek

Örneğin, işte pencere fonksiyonlarının (window functions) kullanım senaryolarına dair bazı gerçek dünya örnekleri:

  • Satış Analizi
    • Her bir yıla (1995, 1997, 1999) kadar olan kümülatif satışları hesaplayın
    • Her bir çeyrek için en çok satan ürünleri bulun
  • Spor İstatistikleri
    • Farklı yıllardaki Olimpiyat madalya sayılarını takip edin
    • Her yarışma döneminde (2000, 2004, 2008) öne çıkan sporcuları belirleyin

ROW_NUMBER() en basit window fonksiyonlarından biridir. Sonuç kümesindeki each row için benzersiz, sıralı bir numara atar. Kullanımı şu şekildedir:

SELECT column1, column2,
       ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;

ROW_NUMBER() ile OVER yan cümlesini kullanmak zorunludur : ROW_NUMBER() OVER ()

Örneğin:

SELECT product_name, sale_date,
       ROW_NUMBER() OVER () as row_num
FROM sales;

Bu işlem, 1'den toplam satır sayısına kadar sayan bir row_num sütunu ekler.

Not: OVER tümleci, numaralandırmanın nasıl çalışacağını kontrol etmek için sıralama ve bölme (partitioning) talimatları içerebilir.

challenge icon

Görev

Kolay

Mevcut tablolar ve sütunlar:

  • <strong>liquids</strong>: <strong>id</strong>, <strong>density</strong>

5.677'den fazla density değerine sahip tüm liquids kayıtlarını getirin.

Sonucu numaralandırın (ROW_NUMBER() fonksiyonunu kullanın) ve bu sütuna row_num adını verin.

Kendin dene

-- Pencere fonksiyonu kullanarak filtrelenmiş sonucun her satırını numaralandır
SELECT id, density, ____ as row_num
FROM liquids
WHERE density > ____
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: SQL playground