Агрегатна функція від агрегатної функції, Інтерактивний підручник з SQL

Давайте розглянемо таке завдання:

Знайти максимальне значення серед середніх цін ПК, порахованих кожного виробника окремо.

Порахувати середні значення вартості за виробниками праці не становить:

функція

Проте стандарт забороняє використовувати підзапит як аргумент агрегатної функції, тобто. не можна вирішити завдання в такий спосіб:

агрегатної

У подібних випадках використовується підзапит у пропозиції FROM:

функції

За допомогою нових можливостей мови – віконних функцій – це завдання можна вирішити без підзапиту:

агрегатної

Зверніть увагу, що віконні функції допускають використання агрегатної функції як аргумент. Ключове слово DISTINCT необхідне тут, оскільки максимальне значення підраховане по всьому набору середніх значень буде «приписано» кожному виробнику.

Стандарт також забороняє використання агрегатної функції як аргумент іншої агрегатної функції. Тобто. ми не можемо вирішити наше завдання таким чином:

Але не буває правил без винятків. Як не дивно, але в Oracle подібні конструкції працюють, і наведений вище запит дасть результат: