গ্রাহক 10 ম এবং 90 তম শতাংশ পান


13

আমার কাছে একটি টেবিল রয়েছে যা গ্রাহক এবং স্কোরগুলি রয়েছে (বিভিন্ন কারণের ভিত্তিতে, এই ক্ষেত্রে অপ্রাসঙ্গিক; গ্রাহকের একাধিক স্কোর থাকতে পারে) যা দেখতে দেখতে:

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অপ্রাসঙ্গিক, কিন্তু আমি এখনও এটি আনতে চাই।

উপরের উদাহরণে, গ্রাহক_আইডি দ্বারা গোষ্ঠীযুক্ত 50 তম পার্সেন্টাইল পাওয়ার সময়, ফলাফলটি হওয়া উচিত (আমি এই উদাহরণে 50 তম শতাংশটি বেছে নিয়েছি, কারণ এটি আমি আরও ভাল করে কী করতে চাই তা চিত্রিত করে):

customer_id | score | score_giver_id
====================================
          1 | 101   | 1
          2 | 131   | 3
          3 | 223   | 1

আমি এখানে বর্ণিত পদ্ধতিটি ব্যবহার করেছি ।

পোস্টগ্র্রেএসকিউএল-এর 90 তম পার্সেন্টাইলে যথাক্রমে 10 ম শতকস্থার মানটি পাওয়া দরকার। আমি দেখেছি যে 9.4 এর পরে একটি ntileফাংশন রয়েছে, তবে আমি সত্যিই বুঝতে পারি না এটি কীভাবে কাজ করে, এটি কী করে এবং এটি যদি আমাকে সহায়তা করে।

আমি মাইএসকিউএল-এর জন্য একটি দুর্দান্ত স্নিপেট পেয়েছি, যা কাজ করে (যদিও কিছু ক্যাভ্যাট রয়েছে), তবে আমি উপলব্ধ থাকলে বিল্ট-ইন ফাংশনগুলি ব্যবহার করতে চাই (মাইএসকিউএলের জন্য কোনও নেই, তাই স্নিপেট)।

উত্তর:


22

দেখে মনে হচ্ছে আপনি percentile_disc()অর্ডার-সেট সামগ্রিক ফাংশনের পরে আছেন।

ডকুমেন্টেশন এটি সম্পর্কে নিম্নলিখিত বলেছেন:

percentile_disc(fraction) WITHIN GROUP (ORDER BY sort_expression)

বিচ্ছিন্ন শতকরা: প্রথম ইনপুট মানটি প্রদান করে যার ক্রমটির অবস্থান নির্দিষ্ট ভগ্নাংশের সমান বা অতিক্রম করে

সমষ্টিটির জন্য বাক্য গঠনটি খানিকটা অদ্ভুত, তবে এটি ব্যবহার করা সহজ:

SELECT percentile_disc(0.9) WITHIN GROUP (ORDER BY score)
  FROM customer_score
 GROUP BY customer_id;

ধারাটিতে শতকরা অংশ গ্রহণ করার জন্য আপনি কলামটি সংজ্ঞায়িত করেছেন ORDER BY

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