首页 > 解决方案 > 当我想显示具有最多部门的块时,为什么同时显示块号?

问题描述

我有一个包含 3 列的表部门(department_name、department_id、department_block_number),所以我想获取部门的最大数量所在的department_block_number?我有两个 department_block_number 303、202,每个部门分别有 4 个和 2 个部门?我该怎么做?

select q1.department_block_number , max(c)
(select department_block_number , count(department_id)as c from department group by department_block_number)q1,
group by department_block_number ;

select q1.department_block_number , max(c)
(select department_block_number , count(department_id)as c from department group by department_block_number)q1,
group by department_block_number ;

现在我只想显示 303,因为它是其中包含最多部门的块号,但我的查询同时显示 303、202 请帮助我。如果您知道其他方法,以便我可以获取结果,请提供帮助

标签: oracletop-n

解决方案


在标准 SQL 中,如果你正在寻找一行,你会这样做:

select d.department_block_number, count(*)
from department d
group by d.department_block_number
order by count(*) desc
fetch first 1 row only;

一些数据库拼写fetch first 1 row onlylimit 1select top (1)以更神秘的方式拼写。

在旧版本的 Oracle 中(fetch在 12c+ 中受支持),您可以执行以下操作:

select department_block_number, cnt
from (select d.department_block_number, count(*) as cnt
      from department d
      group by d.department_block_number
      order by count(*) desc
     ) d
where rownum = 1;

推荐阅读