Let's say I have a list of values, like this:
id  value
----------
A   53
B   23
C   12
D   72
E   21
F   16
..
I need the top 10 percent of this list - I tried:
  SELECT id, value 
    FROM list
ORDER BY value DESC
   LIMIT COUNT(*) / 10
But this doesn't work. The problem is that I don't know the amount of records before I do the query. Any idea's?
Best answer I found:
SELECT*
FROM    (
    SELECT list.*, @counter := @counter +1 AS counter
    FROM (select @counter:=0) AS initvar, list
    ORDER BY value DESC   
) AS X
where counter <= (10/100 * @counter);
ORDER BY value DESC
Change the 10 to get a different percentage.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With