'daki yüzdelik aralığını hesapla Sql Server 2014 kullanıyorum, gerekirse tüm eklentileri, SSAS'ı alabilirim.Sql Server 2014
Basitlik için tamsayılarla tek bir sütun içeren bir tablom var. 10^5 - 10^6 satır içerdiğini kabul etmek güvenlidir. 512, 10, 15, 90, 95 persentillerini hesaplamak istiyorum.
Kolayca, yüzlerce (yüzdelik) ve yüzdelik (yüzdelik) msn ifadesini kullanarak kolayca yapabilirim. Maalesef, sonsuza kadar sürer. Sorun şu ki, bu çağrıların tekrar tekrar aynı şeyi yaptıklarından kesinlikle eminim.
Bir tablo üzerinde bir dizi yüzdesini daha hızlı hesaplamanın bir yolu var mı?
Bunu kolayca C# 'de yapabilirim, tüm satırları belleğe yükleyerek, onları sipariş ederek ve sadece 0.05 * array.Length öğesini, 0.1 * array.Length öğesini vb. Sorarak yapabilirim - ve açıkça çılgınca bir şekilde hızlı. Tabii ki bir tablo değişkenini veya geçici bir tabloyu kullanarak çoğaltabiliyorum, ancak bazı yolların inşa edilmediğine şaşırdım.
select nt, min(num), max(num), count(*)
from (select t.*, ntile(20) over (order by num) as nt
from t
) t
group by nt
order by nt;
Ben de pencere fonksiyonları için sütun üzerinde bir dizin faydalanmak gerektiğini SQL Server eklemek gerekir:
"percentile_cont()" işlevini ayrı sorgular olarak değil, ayrı sütunlar olarak çalıştırmayı deneyin. –
Yüzdeliklerle çalışırken, terimin belirsiz olduğunu unutmayın. https://en.wikipedia.org/wiki/Percentile. Hesaplama yönteminin iş gereksinimlerinizi karşıladığından emin olun. –
@GordonLinoff - evet, elbette - p10, percentile_cont() olarak p10, ... olarak yüzdelik yüzdesini seçecektik. Hala çok, çok yavaş. – Gerino