Return a percentage of the full record set
You really should be using the TOP clause.  This is perfectly legal (assuming you're using SQL Server):

declare @top_val int = 30

select top (@top_val) percent
    col1,
    col2,
    col3
from yourTable
order by &lt;something&gt;;


The above query will select the top 30% of the rows.  As far as I can tell from your question, this satisfies your requirements and is the simplest method.