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 fonksiyonları, mevcut satıra ilişkin bir tablo satırları kümesi üzerinde hesaplamalar gerçekleştirir. Normal toplama fonksiyonlarının aksine, pencere fonksiyonları sonuçları tek bir satıra daraltmaz.

Özellikle ihtiyacınız olduğunda çok yararlıdırlar:

  • Akümülatif toplamları hesaplamak
  • Gruplar içindeki öğeleri sıralamak
  • Mevcut satırları önceki/sonraki satırlarla karşılaştırmak
  • Zaman dönemleri boyunca trendleri analiz etmek

Örneğin, pencere fonksiyonlarının kullanım senaryoları için bazı gerçek dünya örnekleri şunlardır:

  • Satış Analizi
    • Her yıl için kümülatif satışları hesaplayın (1995, 1997, 1999)
    • Her ç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) önde gelen sporcuları belirleyin

ROW_NUMBER() en basit pencere fonksiyonlarından biridir. Sonuç kümesindeki her satıra benzersiz ardışık bir numara atar. İşte nasıl kullanıldığı:

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

ROW_NUMBER() ile OVER yan tümcesini kullanmak zorunludur: ROW_NUMBER() OVER ()

Örneğin:

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

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

Not: OVER yan tümcesi, numaralandırmanın nasıl çalıştığını kontrol etmek için sıralama ve bölümleme yönergeleri 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 yoğunluğa sahip tüm sıvıları getirin.

Sonucu numaralandırın (ROW_NUMBER() fonksiyonunu kullanın) ve bu sütunu row_num olarak adlandırın.

Kopya kağıdı

Pencere fonksiyonları, mevcut satıra ilişkin bir tablo satırları kümesi boyunca hesaplamalar yapar ve sonuçları tek bir satıra daraltmaz.

ROW_NUMBER() her satıra benzersiz sıralı bir numara atar:

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

ROW_NUMBER() ile OVER yan tümcesi zorunludur:

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

Kendin dene

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