Функция procCount вычисляет количество значений по экземпляру процесса в указанной колонке.
Можно применять к любому типу данных. NULL значения игнорируются при подсчете.
procCount(колонка|выражение [, фильтр])
- колонка или выражение — имя столбца из таблицы event, по которому будет работать функция. Также можно написать выражение с более сложной логикой агрегации.
- фильтр — необязательное условие фильтрации для указания того, какие значения следует учитывать при агрегировании.
Запрос
select
extId,
procCount(event.cost) as "Кол-во"
from process
Данные на входе
Данные на выходе
Process
Event
| extId |
cost |
| 1 |
100 |
| 1 |
400 |
| 1 |
500 |
| 1 |
200 |
| 1 |
null |
| 2 |
200 |
| 2 |
100 |
| 2 |
50 |
| 2 |
400 |
| 2 |
200 |
Запрос:
select
extId,
procCount(case when event.cost=50 then null else event.cost end) as "Кол-во без cost=50"
from process
Данные на входе
Данные на выходе
Process
Event
| extId |
cost |
| 1 |
100 |
| 1 |
400 |
| 1 |
500 |
| 1 |
200 |
| 1 |
null |
| 2 |
200 |
| 2 |
100 |
| 2 |
50 |
| 2 |
400 |
| 2 |
200 |
Если функция используется без фильтров, то такое значение уже заранее рассчитано системой в поле process.eventCount. Две колонки в запросе ниже выведут одинаковое значение.
Запрос:
select
extId,
procCount(event.name) as "Кол-во через procCount",
eventCount
from process
Данные на входе
Данные на выходе
Process
Event
| extId |
name |
| 1 |
A |
| 1 |
B |
| 1 |
C |
| 1 |
D |
| 2 |
A |
| 2 |
B |
| 2 |
B |
| 2 |
C |
| 2 |
D |
| extId |
Кол-во через procCount |
eventCount |
| 1 |
4 |
4 |
| 2 |
5 |
5 |