emp_name |salary
---------------
A |12568
B |3000
C |7852
D |2568
E |9852
F |1598
G |8569
我想要一个sql查询来获取最低3名受薪员工
答案 0 :(得分:1)
如果您使用的是Oracle 12c或更高版本,则可以使用fetch
简化查询。而不是像这样编写内部查询。
SELECT *
FROM
(SELECT * FROM EMPLOYEES EMP ORDER BY EMP.SALARY ASC
)
WHERE ROWNNUM <= 3
您可以将它们合并为一个查询。
SELECT * FROM employees emp ORDER BY emp.salary ASC
FETCH FIRST 3 ROWS ONLY;
此处提供了有关语法和构造的更多信息。 http://www.dba-oracle.com/t_offset_fet_first_rows_only.htm
答案 1 :(得分:0)
按降序或升序排序后,您可以使用前3来获得三条记录。我有SQL服务器语法,但您可以从中了解目标DBMS。
前三名最高薪水
Select top 3 emp_name, salary
order by salary desc
前三名最低工资
Select top 3 emp_name, salary
order by salary asc
答案 2 :(得分:0)
ORACLE:
SELECT emp_name
FROM ( SELECT *
FROM employees e
ORDER BY e.salary ASC)
WHERE ROWNUM < 4
祝你好运!
答案 3 :(得分:0)
USE ASC
和LIMIT
Select emp_name, salary FROM TABLE_NAME
order by salary ASC LIMIT 3;
答案 4 :(得分:0)
您没有指定DBMS,因此这是ANSI SQL:
select emp_name, salary
from (
select emp_name, salary,
dense_rank() over (order by salary) as rnk
from employees
) t
where rnk <= 3;
这也将处理薪水相同的员工。因此,如果薪水最低的员工中有一个人的工资相同,那么结果可能会超过三行。