WITHIN GROUP-спецификация
Функция
Задает порядок группировки записей при обработке агрегатных функций.
Спецификация
::=Синтаксические правила
-
Использование
<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|
…