У меня есть таблица отделов с 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, пожалуйста, помогите мне. Если вы знаете другой способ, чтобы я мог получить результат, пожалуйста, помогите
В стандартном 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;