পারসেন্টাইল গণনা করার জন্য দ্রুত সাধারণ পদ্ধতি


9

আমি পোস্টগ্রিজ এসকিউএলে একটি অরসোর্টড কলামের এন> 1 পার্সেন্টাইলগুলি খুঁজতে চাই। উদাহরণস্বরূপ 20 তম, 40 তম, 60 তম, 80 তম এবং 100 ম শতক।

একটি সুস্পষ্ট সমাধান হ'ল কলামটি গণনা এবং বাছাই করা এবং তারপরে একবার দেখুন তবে আমি আরও ভাল সমাধানের জন্য আশা করছি। কোন ধারনা?

পিএস আমি মাইএসকিউএল এর জন্য একটি ভাল সমাধান খুঁজে পেয়েছি তবে এটি পিএসকিএলে অনুবাদ করতে পারছি না


2
আপনি কি উইন্ডোটিং ফাংশনগুলি বিবেচনা করেছেন , যেমন: cume_dist ()?
জ্যাক বলছেন টপান্সওয়ার্স.অক্সিজ

উত্তর:


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()

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.