Найти номер блока отделов, имеющий максимальное количество отделов - PullRequest
0 голосов
/ 29 мая 2019

Чтобы найти номер блока отделов, имеющий максимальное количество отделов.Я пытался с моим кодом, но он не работает

  select department_block_number
  from department
  where department_id in (select max(department_id)
  from department
   group by department_block_number);

Приведенный выше код показывает вывод 2 значений

202

303

при ожидаемом выходеэто одно значение

303

Пожалуйста, помогите

Ответы [ 2 ]

1 голос
/ 29 мая 2019

Вам нужна агрегация!

select department_block_number
from department
group by department_block_number
having count(*) = (select max(cnt)
                   from (select count(*) as cnt
                         from department
                         group by department_block_number
                        )  d
                  );

Есть и другие способы выразить эту логику, но вы, похоже, пытаетесь это сделать.

0 голосов
/ 29 мая 2019

Вы можете использовать следующее для выполнения требования:

SQL> select * from department;

DEPARTMENT_ID DEPARTMENT_BLOCK_NUMBER
------------- -----------------------
            1                     303
            2                     303
            3                     303
            4                     303
            5                     202
            6                     202

    -- Your Query
    SELECT
        DEPARTMENT_BLOCK_NUMBER,
        COUNT(1)
    FROM
        DEPARTMENT
    GROUP BY
        DEPARTMENT_BLOCK_NUMBER
    ORDER BY
        2 DESC NULLS LAST
    FETCH FIRST ROW ONLY;

Результат запроса:

DEPARTMENT_BLOCK_NUMBER   COUNT(1)
----------------------- ----------
                    303          4

Вы можете удалить столбец подсчета согласно вашему требованию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...