select roll_no,name,subject,marks, ROW_NUMBER() OVER (PARTITION BY subject ORDER BY marks DESC) as rank from students_report;