«Правильный» способ сделать это на самом деле что-то вроде:
SELECT m.ceoname, COUNT(1), ROW_NUMBER() OVER (ORDER BY COUNT(1) DESC)
FROM management m
JOIN employee e ON m.managementnr = e.hireteam
GROUP BY m.ceoname
Вы попадаете в темную область запросов Top-N, и я направлю вас к этой превосходной колонке Ask Tom на Top-N . Другие ответы работают в простых случаях, но это когда вы начинаете хотеть делать такие вещи, как возвращение трех лучших команд управления (по количеству сотрудников) и делать это последовательно, чтобы столкнуться с проблемами.
Согласованность является ключевым моментом. Как отмечает Том:
Содержит ли предложение GROUP BY в запросе
гарантировать, что выходные данные будут
отсортировано по столбцам GROUP BY в
заказ, даже если нет ORDER BY
пункт
До тех пор, пока не будет ЗАКАЗАТЬ
оператор по запросу, строки
возвращение не может быть принято в
Любой заказ. Без ЗАКАЗА,
данные могут быть возвращены в любом порядке в
что база данных чувствует себя как
возвращая это. Это всегда было
правда и всегда будет правдой.
Фактически, в Oracle Database 10g
Выпуск 2, вы увидите GROUP BY
возвращать данные в случайном порядке много
чаще, чем раньше:
Используя этот пример данных:
INSERT INTO employee VALUES ('Bob',1);
INSERT INTO employee VALUES ('Sue',1);
INSERT INTO employee VALUES ('John',1);
INSERT INTO employee VALUES ('James',2);
INSERT INTO employee VALUES ('Mary',2);
INSERT INTO employee VALUES ('Ron', 2);
INSERT INTO employee VALUES ('Jane',3);
INSERT INTO employee VALUES ('Luke',4);
INSERT INTO employee VALUES ('Rob',4);
INSERT INTO employee VALUES ('Tim', 5);
INSERT INTO management VALUES (1, 'Kate');
INSERT INTO management VALUES (2, 'Larry');
INSERT INTO management VALUES (3, 'Jake');
INSERT INTO management VALUES (4, 'Sarah');
INSERT INTO management VALUES (5, 'Tom');