Есть ряд агрегатных функций, которые похожи на оконные, но таковыми не являются.

Функция Описание
mode() WITHIN GROUP (ORDER BY выражение_сортировки) возвращает значение, наиболее часто встречающееся во входных данных (если одинаково часто встречаются несколько значений, произвольно выбирается первое из них)
percentile_cont(дробь) WITHIN GROUP (ORDER BY выражение_сортировки) непрерывный процентиль: возвращает значение, соответствующее заданной дроби по порядку, интерполируя соседние входные значения, если необходимо
percentile_disc(дробь) WITHIN GROUP (ORDER BY выражение_сортировки) дискретный процентиль: возвращает первое значение из входных данных, позиция которого по порядку равна или превосходит указанную дробь
rank(аргументы) WITHIN GROUP (ORDER BY сортированные_аргументы) ранг гипотетической строки, с пропусками повторяющихся строк
dense_rank(аргументы) WITHIN GROUP (ORDER BY сортированные_аргументы) ранг гипотетической строки, без пропусков
percent_rank(аргументы) WITHIN GROUP (ORDER BY сортированные_аргументы) относительный ранг гипотетической строки, от 0 до 1
cume_dist(аргументы) WITHIN GROUP (ORDER BY сортированные_аргументы) относительный ранг гипотетической строки, от 1/N до 1

Если после агрегатной функции отсутствует OVER, то функция не является оконной. Значит значение будет вычисляться в процессе группировки строк. Агрегатные функции, после которых написано WITHIN GROUP, не являются исключением.

Что такое WITHIN GROUP?

В WITHIN GROUP в ORDER BY указывается значение, по которому будет сформирован набор данных с указанием сортировки. Сейчас разберем все на примере.

Мода

В повседневной жизни мы часто встречаемся с модой. Модная одежда, модная прическа, модный дизайн... Но что значит быть модным?

В математике для моды есть четкое определение. Модой ряда чисел называется число, которое встречается в данном ряду чаще других. Модой ряда 32, 26, 18, 26, 15, 21, 26 является число 26, встречается 3 раза.

Найдем самого модного руководителя, т.е. того, у кого больше всего подчиненных :)

Сначала посмотрим исходные данные:

SELECT e.manager_id,
       count (*) AS cnt
  FROM employee e
 WHERE e.manager_id IS NOT NULL
 GROUP BY e.manager_id
 ORDER BY cnt DESC
# manager_id cnt
1 24 4
2 5 3
3 20 3
4 23 3
5 21 3
6 16 2
... ... ...

Найдем "самого модного":

SELECT mode() WITHIN GROUP (ORDER BY e.manager_id)
  FROM employee e
# mode
1 24

P.S. В теме про оконные функции у нас нет цели разобрать все агрегатные функции. Целью данного задания было познакомиться с WITHIN GROUP. Остальные вышеперечисленные функции разберем в отдельной теме.

11.10 Собираем строки через разделитель - STRING_AGG