Фукнкция procAvg
вычисляет среднее значение по экземпляру процесса в указанной колонке. Работает по числовым типам колонок.
procAvg(колонка|выражение [, фильтр])
- колонка или выражение — имя столбца из таблицы event, по которому будет работать функция. Также можно написать выражение с более сложной логикой агрегации.
- фильтр — необязательное условие фильтрации для указания того, какие значения следует учитывать при агрегировании.
Запрос:
select
extId as "Экз. процесса",
procAvg(event.cost) as "Средняя стоимость"
from process
Данные на входе
Данные на выходе
Process
Event
extId |
name |
cost |
1 |
А |
100 |
1 |
В |
400 |
1 |
В |
50 |
1 |
С |
200 |
1 |
D |
200 |
2 |
А |
200 |
2 |
B |
100 |
2 |
C |
50 |
2 |
D |
400 |
2 |
E |
200 |
Экз. процесса |
Средняя стоимость |
1 |
211.53846153846 |
2 |
190 |
Запрос:
select
process.extId,
event.name,
event.cost,
procAvg(event.cost) as "Средняя стоимость",
case when event.cost>procAvg(event.cost) then 'Выше среднего' else 'Ниже' end as "Сравнение"
from process,event
Данные на входе:
Данные на выходе:
extId |
name |
cost |
1 |
А |
200 |
1 |
В |
100 |
1 |
В |
50 |
1 |
С |
400 |
1 |
D |
200 |
extId |
name |
cost |
Средняя стоимость |
Сравнение |
1 |
А |
200 |
190 |
Выше среднего |
1 |
В |
100 |
190 |
Ниже |
1 |
В |
50 |
190 |
Ниже |
1 |
С |
400 |
190 |
Выше среднего |
1 |
D |
200 |
190 |
Выше среднего |
Запрос:
select
extId as "Экз. процесса"
from process
where procAvg(event.cost)>200
Данные на входе
Данные на выходе
Process
Event
extId |
name |
cost |
1 |
А |
100 |
1 |
В |
400 |
1 |
В |
50 |
1 |
С |
200 |
1 |
D |
200 |
2 |
А |
200 |
2 |
B |
100 |
2 |
C |
50 |
2 |
D |
400 |
2 |
E |
200 |
Запрос:
select
extId,
procAvg(event.cost, event.resource='Pete') as "Средняя стоимость"
from process
Данные на входе
Данные на выходе
Process
Event
extId |
cost |
resource |
1 |
400 |
Sean |
1 |
50 |
Mike |
1 |
200 |
Sara |
1 |
100 |
Pete |
2 |
200 |
Pete |
2 |
400 |
Sue |
2 |
50 |
Pete |
2 |
100 |
Mike |
2 |
200 |
Sara |
Экз. процесса |
Средняя стоимость |
1 |
100 |
2 |
125 |