Untuk mengambil baris berdasarkan persentase jumlah baris di setiap grup, Anda dapat menggunakan dua fungsi jendela:satu untuk menghitung baris dan satu untuk memberi mereka nomor unik.
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;
Contoh SQLFiddle:http://sqlfiddle.com/#!15/94fdd/1
Btw:menggunakan char
hampir selalu merupakan ide yang buruk karena ini adalah tipe data dengan panjang tetap yang diisi dengan panjang yang ditentukan. Saya harap Anda hanya melakukannya untuk menyiapkan contoh dan tidak menggunakannya di tabel asli Anda.