从员工表中选择前 10 名薪水

Posted

技术标签:

【中文标题】从员工表中选择前 10 名薪水【英文标题】:Select top 10 salary from employees table 【发布时间】:2014-07-15 20:34:16 【问题描述】:

我写了这个 sql 查询:

select first_name, salary 
from employees 
where salary in( select distinct top(10) salary from employees order by salary  disc );

当我运行它时,我得到了这个错误:

SQL 错误:ORA-00907:缺少右括号 00907. 00000 - “缺少右括号”

什么可能导致错误?

【问题讨论】:

disc 是列还是 desc 的拼写错误?这可能是您的错误的原因。 Oracle select query with inner select query error 的可能重复项 在子查询中不带order by子句试试看。 【参考方案1】:

Top-N 查询在 Oracle 中通常以这种方式执行:

select * from (
select first_name, salary 
from employees order by salary desc
) where rownum <= 10

这个可以让你获得前 10 名的薪水。

【讨论】:

【参考方案2】:

我认为问题在于使用top,它是 SQL Server 而不是 Oracle。

改用rank 来按顺序获得薪水并获得前10名:

select v.first_name, v.salary 
from ( select first_name, salary, rank() over (order by salary desc) r from employees) v
where v.r <= 10

【讨论】:

【参考方案3】:

试试 -

SELECT first_name, salary 
(  select first_name, salary 
   from employees 
   order by salary Desc)
where rownum <= 10

【讨论】:

【参考方案4】:

以下查询适用于 Oracle。

select * from (select * from emp order by sal desc) where rownum

【讨论】:

【参考方案5】:

试试这个 === SELECT first_name,salary FROM employees WHERE Salary IN(从员工中选择薪水 GROUP BY 薪水 ORDER BY 薪水 DESC LIMIT 10);

【讨论】:

LIMIT 用于 mysql,这里是 ORACLE。

以上是关于从员工表中选择前 10 名薪水的主要内容,如果未能解决你的问题,请参考以下文章

每当从组合框中选择员工时,我想在文本框中显示员工的薪水

9取得薪水最高的前五名员工bjpowernode34道SQL题

每个部门只选择一名员工

Oracle HR 模式。从员工中选择最高工资

Mysql 练习题10道(1-10题)

如何在mongodb中获得前两名受薪员工