Window sıralama
- SQL kursu
- İleri seviye
- Ders 21/81
- 5 dk
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
-- en aktif kullanıcılar
SELECT user_id, COUNT(*) AS events,
ROW_NUMBER()Örnek çözüm
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
SELECT user_id, COUNT(*) AS events,
____() OVER (ORDER BY COUNT(*) DESC) AS rk
FROM events
GROUP BY user_id;
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 |