RANK ve DENSE RANK Analitik Fonksiyonu

Merhaba bu yazımda rank ve dense rank analitik fonksiyonunun kullanımı hakkında bahsetmek istiyorum.
Analitik fonksiyonlar zaman zaman hayat kurtarıcı olabiliyor,beni bir çok kez manuel işlemlerden kurtarmıştır 🙂

Gelelim fonksiyonun nasıl kullanıldığına..
Diyelimki elimizde çalışanların bulunduğu bir tablo var burada maaşları ve departmanlarıda tutuluyor olsun.
Sizden her departmanın en yüksek maaşlı çalışanı veya en düşük maaşlı çalışanın id lerini istediler ne yapardınız ??
Hemen aklınıza max veya min fonksiyonlarını kullanırım gruplarım bir şekilde çekerim diye geçiyordur,alternatif yöntemler olabilir peki rank fonksiyonlarımızla nasıl yapılıyor görelim

görüldüğü gibi her departmanı kendi içerisinde grupladı ve en düşük maaş alana 1 diyerek küçükden büyüğe doğru sıraladı.Dikkat ederseniz 50 numaralı departmanda aynı maaşı alan çalışanlar mevcut.
Maaşı 2200 olan iki kişinin rank ları aynı 2 sıralama yaparken 2-3 şeklinde bir sıralama olmamış daha sonrasında maaşı 2400 olan iki kişiye 3 kullanılmadığı için 4-4 şeklinde rank değeri verilmiş.
Eğer her departmanın en yüksek maaşından en düşüğüne diye sıralama yapmak isteseydik “order by salary desc” şeklinde bunu yapabilirdik.

dense rank fonksiyonunun kullanımıda rank ile aynı mantıktadır terk farkı yukarıda bahsettiğim rank değerleri burada sırayla gitmektedir şöyleki

burada 50 numaralı departmana dikkat ederseniz rank değerleri 1,2,3,4 gibi devam etmektedir.

Örnekler basit olabilir,kendi sistemizde kendi tablolarınız üzerinde daha karmaşık verileri çekmek için kullanabilirsiniz.

Advertisements

FREE! Expert Oracle Database Architecture, 2nd Edition

Thomas Kyte’ın elinden değerli bir eser

http://www.red-gate.com/products/oracle-development/entrypage/expert-oracle-database-architecture?utm_source=allthingsoracle&utm_medium=email&utm_content=may12-news&utm_campaign=deploymentsuitefororacle