Предположим, что я хочу выбрать из таблицы ABC, содержащей поля A, B, C, D, E, где E - числовое поле.GROUP BY небольшим подмножеством возвращаемых полей
Для данной комбинации A
и B
Я хочу вернуть строку, содержащую максимальное значение E
. Как мне это сделать? Что мне делать GROUP BY
?
Если я пытаюсь выполнить GROUP с помощью A, B при размещении max только вокруг E, я получаю ошибку «not a GROUP BY expression
», но я хочу GROUP только A, B.
Я попытался
select A,B,C,D,max(E)
from ABC
group by A,B
и это не работает.
Какой из этих двух будет работать лучше? Есть ли способ избавиться от промежуточной таблицы, содержащей столбец row_number(), и вместо этого выбрать требуемые строки для каждой комбинации A и B, используя только предложение WHERE на ABC в исходном запросе? Другими словами, можно ли интегрировать PARTITION и сбор требуемой строки с предложением WHERE? – user2371765
Я предпочитаю что-то вроде этого. выберите * от ABC, где rank() over (раздел (ABC.A , ABC.B ) заказ от ABC.E) = 1 Для этого я получаю сообщение об ошибке, «функции окна здесь запрещены». – user2371765