Menu
Coddy logo textTech

RANK ve DENSE_RANK Fonksiyonları

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

ROW_NUMBER() bir sıralama işlevi türüdür ve iki tane daha vardır: RANK() ve DENSE_RANK().

RANK() işlevi satırları ROW_NUMBER() gibi numaralandırır, ancak aynı satırlara aynı numaraları verir ve numaraları atlar. DENSE_RANK(), RANK() işlevine benzer, ancak numaraları atlamaz.

Örneğin:

idlevel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

Şu sonucu döndürür:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

Açıklama:

  • ROW_NUMBER(): Her zaman benzersiz: 1, 2, 3, 4, 5, 6
  • RANK():
    • seviye 5 (2 satır): her ikisi de 1 sıralamasını alır
    • seviye 6 (2 satır): her ikisi de 3 sıralamasını alır (2 atlanır)
    • seviye 7 (2 satır): her ikisi de 5 sıralamasını alır (4 atlanır)
  • DENSE_RANK():
    • seviye 5 (2 satır): her ikisi de 1 sıralamasını alır
    • seviye 6 (2 satır): her ikisi de 2 sıralamasını alır (atlama yok)
    • seviye 7 (2 satır): her ikisi de 3 sıralamasını alır (atlama yok)
challenge icon

Görev

Kolay

Kullanılabilir tablolar ve sütunlar:

  • medals: region, medal_color, medal_count

Bölgeyi, toplam madalya sayısını (renkten bağımsız olarak tüm madalyaların toplamı) ve iki sıralama türünü gösteren bir sorgu oluşturun:

  1. Madalyaların toplamı üzerinden (aralıklı) bir regular_rank
  2. Madalyaların toplamı üzerinden (aralıksız) bir dense_rank

Sonucu şu şekilde sıralayın:

order by total_medals desc, region asc

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

Kendi başına pratik yap: SQL playground