sql查询获取前3名工资

时间:2016-07-04 06:22:04

标签: sql greatest-n-per-group

  emp_name |salary
  ---------------
  A        |12568
  B        |3000
  C        |7852
  D        |2568
  E        |9852
  F        |1598
  G        |8569

我想要一个sql查询来获取最低3名受薪员工

5 个答案:

答案 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 ASCLIMIT

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;

这也将处理薪水相同的员工。因此,如果薪水最低的员工中有一个人的工资相同,那么结果可能会超过三行。