0
这是一个问题,今天下午我:查询不会给确切的最高薪水的结果
有一个表包含ID,EMP_NAME,emp_mailid和雇员薪金,获得第一薪水最高的员工的名字,在Oracle
在这里,这是我的表
id emp_name emp_mailid salary
2 dinesh [email protected] 5000
3 ganesh [email protected] 6000
6 ramesh [email protected] 4500
10 suresh [email protected] 10000
11 rajesh [email protected] 15000
15 kamesh [email protected] 16000
16 kamalesh [email protected] 7800
19 neelash [email protected] 12563
20 rajan [email protected] 156231
22 vignesh [email protected] 45220
30 rubesh [email protected] 78000
31 john [email protected] 6522
,这我的查询:
select *
from
(
select
salary
,dense_rank() over (order by salary desc) ranking
from test
)
where ranking = 1
当我执行此操作时,它显示最高工资为78000,但实际上其错误的最高工资为156231
您能否建议我一个更好的查询?
现在它工作正常!很感谢! 但为什么varchar不支持? –
@dineshdanny - 如果该列是“varchar”或“varchar2”,则按它排序*按字母顺序排列。按照字母顺序,字符串'1000'出现在字符串'92'之前(因为第一个字符'1'在'9'之前)。这是“工资”列**必须是“数字”数据类型的100多个原因之一。当他们将'salary'列创建为'varchar2'时,开发人员喝了什么? – mathguy