Предположим, у нас есть следующая таблица:
index value 1 55 2 66 3 77 1 88 3 99
как я могу суммировать (значение), когда индекс = 1 или индекс = 3, и avg (значение), когда индекс = 2 в одном операторе выбора?
Легко:
SELECT index, CASE WHEN index IN (1, 3) THEN SUM(value) ELSE AVG(value) END FROM yourTable GROUP BY index
SELECT sum(value) as agg, 'S' as aggregateType FROM DaTAble WHERE index IN (1, 3) UNION ALL SELECT avg(value) as agg, 'A' as aggregateType FROM DaTAble WHERE index = 2