ни одной групповой функции (00937. Ноль ноль ноль ноль ноль)


SELECT p.pdept.dno,
       MAX(SUM(p.budget)) AS max
FROM Proj111 p
GROUP BY p.pdept.dno

Несмотря на то, что я включил все необходимые атрибуты в инструкции select, чтобы сгруппировать предложение, оно будет генерировать вышеуказанную проблему? Как ее решить?

1 2
sql

1 ответ:

Вы не можете вложить агрегатные функции подобным образом. Если вы хотите получить максимальную сумму от каждой группы, то вы можете попробовать следующее:

WITH cte AS (
    SELECT p.pdept.dno AS dept,
           SUM(p.budget) AS budget
    FROM Proj111 p
    GROUP BY p.pdept.dno
)

SELECT t.dept,
       t.budget
FROM cte t
WHERE t.budget = (SELECT MAX(budget) FROM cte)
Общее табличное выражение, которое я назвал cte, находит бюджеты для каждого отдела. Затем запрос ограничивает этот результат отделом с максимальным бюджетом, снова запрашивая cte для максимального бюджета.