प्रत्येक समूह में पंक्तियों की संख्या के प्रतिशत के आधार पर पंक्तियों को पुनः प्राप्त करने के लिए आप दो विंडो फ़ंक्शंस का उपयोग कर सकते हैं:एक पंक्तियों की गणना करने के लिए और एक उन्हें एक अद्वितीय संख्या देने के लिए।
select gp,
val
from (
select gp,
val,
count(*) over (partition by gp) as cnt,
row_number() over (partition by gp order by val desc) as rn
from temp
) t
where rn / cnt <= 0.75;
SQLFiddle उदाहरण:http://sqlfiddle.com/#!15/94fdd/1
बीटीडब्ल्यू:char
. का उपयोग करना लगभग हमेशा एक बुरा विचार है क्योंकि यह एक निश्चित-लंबाई वाला डेटा प्रकार है जो परिभाषित लंबाई तक गद्देदार होता है। मुझे आशा है कि आपने केवल उदाहरण स्थापित करने के लिए ऐसा किया है और इसे अपनी वास्तविक तालिका में उपयोग नहीं करते हैं।