我的桌子是
emp_id | emp_name | emp_doj | emp_desg | pay | manager_id
--------+----------+------------+-----------------+--------+------------
3 | John | 2008-12-20 | MTS | 93750 | 3
5 | manoj | 2014-08-10 | Project Trainee | 200000 | 3
6 | kumar | 2014-09-12 | Project Trainee | 15000 | 3
2 | Sree | 2014-09-12 | ZU | 150000 | 3
我想从这张表中得到完整的一行,哪一行的薪水是第二高的。也就是说,我想在这里得到sree的详细信息....
答案 0 :(得分:4)
试试这个:
select max(pay) from table_name where pay NOT IN(select max(pay) from table_name) LIMIT 0,1
这对你有帮助。
答案 1 :(得分:1)
这可以使用窗口函数轻松完成:
select emp_id, emp_name, emp_doj, emp_desg, pay, manager_id
from (
select emp_id, emp_name, emp_doj, emp_desg, pay, manager_id,
dense_rank() over (order by pay desc) as rnk
from employee
) t
where rnk = 2;
如果两名员工的工资相同,则两人均退还。如果您只想返回其中一个,请使用row_number()
代替dense_rank()