1
我有一個〜5000行的表,每個表都有幾列,還有一些表可能包含也可能不包含在列表中的已知值。獲取已知值的百分位
我想要做的是按順序依次排列不同的列,然後找到映射到該列的已知值的大致百分位數。我只需要大約10個百分點的括號(例如,如果第10百分位的截止點是6,第20百分位的截止點是14,並且我已知的值是7,我將返回0.2)。
我不能依賴列中正在計算百分位數的已知值。
我計算百分位數「水桶」這樣的:通過這些
upperVal | Percentile
======== | ==========
27 | 0.1
58 | 0.2
89 | 0.3
120 | 0.4
158 | 0.5
200 | 0.6
254 | 0.7
336 | 0.8
495 | 0.9
2450 | 1
的的一部分,這絆倒我的是如何最好地循環:
SELECT MAX(colName) as upperVal, (CAST(Percentile as float)/10.0) as Percentile FROM (
SELECT colName, NTILE(10) OVER(ORDER BY colNameASC) AS Percentile FROM tableName AS a
) as b GROUP BY Percentile
,給了我一個數值表並獲得已知值的百分位「桶」(不會引入太多開銷)。
任何人都可以幫助闡明這一點嗎?
與另一顯影劑橡膠鴨調試之後,我們來到了一個非常類似的解決方案: 選擇TOP 1百分從( \t SELECT MAX(COLNAME)作爲upperVal,(CAST(百分爲float)/ 10.0)作爲百分FROM( \t \t SELECT COLNAME,NTILE(10)OVER(ORDER BY COLNAME ASC)AS百分FROM TABLENAME AS一個 \t)爲b GROUP BY百分)爲c WHERE upperVal <= knownValue ORDER BY upperVal DESC – MassivePenguin