I am having a table student. I need top 3 highest records from each group. The query should work for dynamically added groups. Without setting default value of groups in the query.
student table:
id    name    mark       subject
--------------------------------------
1     kannan     60         French
2     balan      77         French
3     raja       88         French
4     sheik      78         French
5     satheesh   98         French
6     Ravi       90         French
7     Vishnu     90         English
8     siva       100        English
9     suresh     50         English
10    ramesh     59         English
11    ganesh     97         English
12    david      58         English
Expected Result:
name      mark    subject
---------------------------
Ravi      90      French
Satheesh  98      French
raja      88      French
siva      100     English
ganesh    97      English
ramesh    59      English
Query i tried:
SELECT name, mark, subject from (SELECT name, mark, subject order by mark 
desc LIMIT 3) as ss group by subject, mark;
But I am not getting the correct values.
 
    