मेरा सुझाव है कि विंडो फ़ंक्शन का उपयोग करके रनिंग प्रतिशत की गणना करें और फिर परिणाम की तुलना 80 से करें।
इस छोटे से कोड नमूने में मैंने दिखाया है कि इसे कैसे करना है, यह आपकी क्वेरी के परिणाम के आधार पर एक सीटीई ब्लॉक में रखा गया है जिसे your_data
कहा जाता है। . यह आपको केवल विचार दिखाता है।
with
your_data (category, percentage) as(
-- sample data based on your example
select 1, 32 from dual union
select 2, 20 from dual union
select 3, 20 from dual union
select 4, 10 from dual union
select 5, 18 from dual
),
t as (
select your_data.*,
-- running sum calculation
sum(percentage) over (order by category) pctg_running
from your_data
)
select *
from t
where pctg_running <= 80
असल में यह 3 पंक्तियां देता है और आप कहते हैं कि आप 4 पंक्तियों को दिखाने की उम्मीद करते हैं। उस पंक्ति को जोड़ने के लिए जहां रनिंग प्रतिशत पहले आपकी सीमा (80) से अधिक है, आप वर्तमान श्रेणी प्रतिशत को रनिंग वैल्यू से निकाल सकते हैं, यानी sum(percentage) over (order by category)
बदलें। sum(percentage) over (order by category) - percentage
।
एचटीएच