【问题标题】:How do I select top rows in SQL如何在 SQL 中选择顶行
【发布时间】:2021-02-15 06:30:47
【问题描述】:

我有一个输出部门名称及其员工人数的代码。

SELECT department_name,COUNT (employee_id) FROM EMPLOYEES  
JOIN DEPARTMENTS  
ON employees.department_id=departments.department_id
GROUP BY department_name 
ORDER BY count(employee_id) DESC

我想选择员工人数最多的前三个部门名称。 .当我WHERE 时,我得到三行,但输出不正确。

SELECT department_name,COUNT (employee_id) FROM EMPLOYEES  
JOIN DEPARTMENTS  
ON employees.department_id=departments.department_id
WHERE rownum <= 4
GROUP BY department_name 
ORDER BY count(employee_id) DESC

关于这个问题,您有什么可以推荐给我的吗?此外,我将在 PL/SQL 块中使用此查询。 谢谢!

【问题讨论】:

标签: sql oracle top-n


【解决方案1】:

rownum 子句发生在排序之前。您可以使用

fetch first 3 rows only

order by 子句之后,如果使用 Oracle 12c 或更高版本,或者与 rownum 一起使用子查询 -

select * from (
    your query here
) 
where rownum < 4;

【讨论】:

  • 我认为在 plsql 中使用它在这里并不重要
猜你喜欢
  • 1970-01-01
  • 2016-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-09
  • 2015-01-08
  • 2021-07-21
  • 2016-12-05
相关资源
最近更新 更多