Задает порядок группировки записей при обработке агрегатных функций.
::=
Использование <WITHIN GROUP-спецификации>
совместно с <OVER-спецификацией>
недопустимо.
<WITHIN GROUP-спецификация>
может применяться как при наличии, так и при
отсутствии в <запросе выборки>
<GROUP BY-спецификации>
.
Количество <WITHIN GROUP-спецификаций>
в <запросе выборки>
не ограничено,
однако при наличии в <запросе выборки>
<GROUP BY-спецификации>
все <ORDER BY-спецификация>
внутри <WITHIN GROUP-спецификации>
должны быть идентичны.
Допустимый запрос (конструкцииwithin group (order by model)
одинаковы у обеих агрегатных функций): select bodytype, FIRST_VALUE(model) within group (order by model) as first_val, LAST_VALUE(model) within group (order by model) as last_val from auto group by bodytype; Недопустимые запросы (конструкцииwithin group
не идентичны): а) select bodytype, FIRST_VALUE(model) within group (order by model) as first_val, LAST_VALUE(model) within group (order by color) as last_val from auto group by bodytype; б) select FIRST_VALUE(make) within group (order by make asc) as first_val, LAST_VALUE(make) within group (order by make desc) as last_val from auto group by make;
При наличии в запросе <GROUP BY-спецификации>
сортировка записей в
соответствии с конструкцией <WITHIN GROUP-спецификация>
будет осуществляться
отдельно внутри каждой группы.
При отсутствии в запросе <GROUP BY-спецификации>
сортироваться будут все
записи выборки.
Порядок сортировки аргументов важен только для агрегатных функций
(FIRST_VALUE
, LAST_VALUE
, LISTAGG
), результат которых зависит от заданной
сортировки. Для агрегатных функций, возвращающих количественные значения (SUM
,
COUNT
и др.), порядок сортировки не имеет значения, поэтому для них
конструкция <WITHIN GROUP-спецификация>
игнорируется.
select count(*), FIRST_VALUE(model) within group (order by year, model, color) as first_val, LAST_VALUE(model) within group (order by year, model, color) as last_val from auto group by make; FIRST_VAL LAST_VAL --------- -------- | 7|A-310 |A-310 | | 91|AMBASSADOR SST V8 |MATADOR STATION | | 10|3.0 CSI |3.0 CSI | | 168|DODGE CHALLENGER SIX|PLYMOUTH ROAD RUNNER| …