почему показывается номер блока, когда я хочу показать блок с максимальным количеством отделов? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть таблица отделов с 3 столбцами (имя_раздела, идентификатор_подраздела, номер_подразделения), поэтому я хочу получить номер отдела_блока, в котором находится максимальное количество отделов?У меня есть два отдела № 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, пожалуйста, помогите мне.Если вы знаете другой способ, чтобы я мог получить результат, пожалуйста, помогите

1 Ответ

1 голос
/ 12 апреля 2019

В стандартном 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 only как limit 1 или select 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;
...