这是我今天下午得到的一个问题:
有一个表包含ID,emp_Name,emp_mailid和员工薪资,在oracle中获取第一高薪员工的姓名
这是我的表
id emp_name emp_mailid salary
2 dinesh dinesh@gmail.com 5000
3 ganesh ganesh@gmail.com 6000
6 ramesh ramesh@gmail.com 4500
10 suresh suresh@gmail.com 10000
11 rajesh rajesh@gmail.com 15000
15 kamesh kamesh@gmail.com 16000
16 kamalesh kamalesh@gmail.com 7800
19 neelash neelash@gmail.com 12563
20 rajan rajan@gmail.com 156231
22 vignesh vignesh@gmail.com 45220
30 rubesh rubesh@gmail.com 78000
31 john john@gmail.com 6522
这是我的疑问:
select *
from
(
select
salary
,dense_rank() over (order by salary desc) ranking
from test
)
where ranking = 1
当我执行此操作时,它显示最高工资为78000但实际上其错误的最高工资为156231
你能建议我更好的查询吗?
答案 0 :(得分:3)
如果它显示最大值为78000,那可能是因为薪水栏是varchar而不是数字。
试试这个:
select *
from
(
select
salary
,dense_rank() over (order by to_number(salary) desc) ranking
from test
)
where ranking = 1