Функция last_event
находит последнее значение по экземпляру процесса в указанной колонке. Строки заранее отсортированы по дате начала, потом по признаку сортировки (sorting) и потом по дате окончания на основании указанного маппинга в модели данных.
Можно применять к любому типу данных. Тип данных результата совпадает с типом данных входного столбца.
NULL
значения учитываются в выдаче. Если необходимо отбрасывать NULL
при расчете, то можно воспользоваться фильтром.
last_event(колонка|выражение [, фильтр])
- колонка или выражение — имя столбца из таблицы журнала событий, по которому будет работать функция. Также можно написать выражение с более сложной логикой.
- фильтр — необязательное условие фильтрации для указания того, какие значения следует учитывать при агрегировании.
Запрос:
select
id,
last_event(event.cost) as "Последнее значение"
from case_table
Данные на входе
Данные на выходе
case_table
event
case_id |
cost |
1 |
100 |
1 |
400 |
1 |
500 |
1 |
200 |
1 |
null |
2 |
200 |
2 |
100 |
2 |
50 |
2 |
400 |
2 |
200 |
id |
Последнее значение |
1 |
null |
2 |
200 |
Запрос:
select
extId,
last_event(event.cost, event.cost is not null) as "Последнее значение без NULL"
from case_table
Данные на входе
Данные на выходе
case_table
event
case_id |
cost |
1 |
100 |
1 |
400 |
1 |
500 |
1 |
200 |
1 |
null |
2 |
200 |
2 |
100 |
2 |
50 |
2 |
400 |
2 |
200 |
id |
Последнее значение без NULL |
1 |
200 |
2 |
200 |
Запрос:
select
id,
last_event(case when event.cost=0 then 1000 else event.cost end) as "Первое значение"
from case_table
Данные на входе
Данные на выходе
case_table
event
case_id |
cost |
1 |
100 |
1 |
400 |
1 |
500 |
1 |
200 |
1 |
0 |
2 |
200 |
2 |
100 |
2 |
50 |
2 |
400 |
2 |
200 |
id |
Первое значение |
1 |
1000 |
2 |
200 |