मेरे पास एक तालिका है जिसमें ग्राहक और स्कोर शामिल हैं (विभिन्न कारकों के आधार पर, इस मामले में अप्रासंगिक; एक ग्राहक के कई स्कोर हो सकते हैं), जो इस तरह दिखता है:
customer_id | score | score_giver_id
====================================
1 | 100 | 1
1 | 102 | 1
1 | 101 | 1
1 | 140 | 1
2 | 131 | 3
1 | 44 | 1
3 | 223 | 1
3 | 1 | 2
3 | 201 | 1
3 | 211 | 1
3 | 231 | 1
3 | 243 | 1
score_giver_id
अप्रासंगिक है, लेकिन मैं अभी भी यह लाने के लिए करना चाहते हैं।
ऊपर दिए गए उदाहरण में, जब customer_id द्वारा समूहीकृत 50 वाँ प्रतिशताइल प्राप्त किया जाता है, तो परिणाम होना चाहिए (मैंने इस उदाहरण में 50 वाँ प्रतिशत उठाया है, क्योंकि यह दिखाता है कि मैं क्या करना चाहता हूँ):
customer_id | score | score_giver_id
====================================
1 | 101 | 1
2 | 131 | 3
3 | 223 | 1
मैंने यहाँ वर्णित विधि का उपयोग किया ।
मुझे उस मूल्य को प्राप्त करने की आवश्यकता है जो क्रमशः 10 वें प्रतिशताइल में है, पोस्टग्रेएसक्यूएल में 90 वें प्रतिशत पर। मैंने देखा है कि 9.4 के बाद से एक ntile
समारोह है, लेकिन मैं वास्तव में यह नहीं समझता कि यह कैसे काम करता है, यह क्या करता है, और अगर यह मेरी मदद करता है।
मुझे MySQL के लिए एक अच्छा स्निपेट मिला है, जो काम करता है (भले ही कुछ कैविएट हैं), लेकिन मैं बिल्ट-इन फ़ंक्शन का उपयोग करना चाहूंगा यदि उपलब्ध हो (MySQL के लिए कोई नहीं है, इसलिए स्निपेट है)।