प्रतिशतक की गणना के लिए सामान्य सामान्य विधि


9

मैं PostgreSQL में एक गैर-कॉलम के n> 1 प्रतिशत को ढूंढना चाहता हूं। उदाहरण के लिए 20 वीं, 40 वीं, 60 वीं, 80 वीं और 100 वीं प्रतिशताइल।

एक स्पष्ट समाधान कॉलम को गिनना और सॉर्ट करना है और फिर एक नज़र रखना है लेकिन मैं बेहतर समाधान की उम्मीद कर रहा हूं। कोई विचार?

PS मुझे MySQL के लिए एक अच्छा समाधान मिल गया है लेकिन इसे psql में अनुवाद नहीं कर सकता


2
क्या आपने विन्डिंग फ़ंक्शंस पर विचार किया है , जैसे cume_dist ()?
जैक का कहना है कि topanswers.xyz

Postgres में PERCENT_RANK ()
Phil

जवाबों:


12

मैं निम्नलिखित के साथ आया हूँ:

select cume, max(var) AS max_var
from (
   select var
        , ntile(5) over (order by var) as cume
   from table
   ) as tmp
group by cume
order by cume;

यह प्रत्येक समूह के अधिकतम का चयन करता है जिसका उपयोग करके विभाजित किया गया है ntile()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.