Is there any predefined function or method available to get the second highest salary from an employee table?
In Oracle you would use a query such as this one to return paged results (rows M to N):
SELECT NAME, salary
FROM (SELECT NAME, salary, ROWNUM r
FROM (SELECT NAME, salary
FROM employee
ORDER BY salary DESC
)
WHERE ROWNUM <= :N
)
WHERE r >= :M
Alternatively, you can use analytics:
SELECT NAME, salary
FROM (SELECT NAME, salary, row_number() over (ORDER BY salary DESC) n
FROM employee)
WHERE n BETWEEN :M AND :N