Để truy xuất các hàng dựa trên tỷ lệ phần trăm số hàng trong mỗi nhóm, bạn có thể sử dụng hai hàm cửa sổ:một để đếm các hàng và một để cung cấp cho chúng một số duy nhất.
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;
Ví dụ về SQLFiddle:http://sqlfiddle.com/#!15/94fdd/1
Btw:sử dụng char
hầu như luôn luôn là một ý tưởng tồi vì nó là kiểu dữ liệu có độ dài cố định được đệm vào độ dài xác định. Tôi hy vọng bạn chỉ làm điều đó để thiết lập ví dụ và không sử dụng nó trong bảng thực của bạn.