SQL применить сумму AVG условно - PullRequest
0 голосов
/ 19 марта 2012

Предположим, у нас есть следующая таблица:

index  value
1      55  
2      66  
3      77  
1      88  
3      99

как я могу суммировать (значение), когда индекс = 1 или индекс = 3, и avg (значение), когда индекс = 2 в одном операторе выбора?

Ответы [ 2 ]

3 голосов
/ 19 марта 2012

Легко:

SELECT index, CASE WHEN index IN (1, 3) THEN SUM(value) ELSE AVG(value) END
FROM yourTable
GROUP BY index
1 голос
/ 19 марта 2012
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
...