CodeBlanks Logo Icon CodeBlanks

Window sıralama

ROW_NUMBER ile en iyi kullanıcıları bul

Window sıralama

En aktif kullanıcıları ROW_NUMBER() ile sıralayabilirsin.

SELECT user_id, COUNT(*) AS events,
  ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS rk
FROM events
GROUP BY user_id;

Bu sorgu en aktif kullanıcıyı 1. yapar.

events kaynağından user_id, COUNT(*) AS events, ROW_NUMBER() OVER (ORDER BY … seçilir. Satırlar user_id değerine göre gruplanır; toplam fonksiyonları her grup için ayrı hesaplanır. ROW_NUMBER() bir pencere fonksiyonudur: satırları daraltmadan, OVER (…) içinde tanımlanan pencereye göre her satır için ayrı değer hesaplar.

Window sıralama — ayrıntı

ROW_NUMBER OVER (ORDER BY ... DESC) ile en yüksek sayı 1 olur.

Bu numaraya göre WHERE rn <= 3 süzerek en yoğun üç günü raporlayabilirsin; filtre için sorguyu bir CTE içine almak gerekir.

Uygulama Window sıralama

Her kullanıcının olay sayısını ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) ile sırala.

Başlangıç kodu

query.sql
-- en aktif kullanıcılar
SELECT user_id, COUNT(*) AS events,
  ROW_NUMBER()

Örnek çözüm

query.sql
SELECT user_id, COUNT(*) AS events,
  ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS rk
FROM events
GROUP BY user_id;

Beklenen çıktı

user_id  events  rk
5        42      1
3        35      2

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 En aktif kullanıcı nasıl bulunur?

  • ROW_NUMBER + DESC Doğru cevap
  • SUM + GROUP
  • COUNT + ASC
  • AVG + HAVING

Açıklama: ROW_NUMBER ile azalan sıralama yapılır.

2 ROW_NUMBER ekle

Soru
SELECT user_id, COUNT(*) AS events,
  ____() OVER (ORDER BY COUNT(*) DESC) AS rk
FROM events
GROUP BY user_id;
Cevap
SELECT user_id, COUNT(*) AS events,
  ROW_NUMBER() OVER (ORDER BY COUNT(*) DESC) AS rk
FROM events
GROUP BY user_id;

Açıklama: ROW_NUMBER doğru cevap.

3 Window sıralama: kavramları eşleştir

Kavram Anlamı
ROW_NUMBER sıra
ORDER BY DESC azalan
en aktif birinci
COUNT say

İleri seviye bölümündeki tüm dersler