是否可以在同一个 SQL Select 查询(无函数/过程或 PL/SQL)上计算两个聚合函数的代数运算?
| id || A |
|-----||-----|
| 1 || 10 |
| 2 || 20 |
| 3 || 30 |
| 4 || 40 |
SELECT (SELECT SUM(A) FROM Table Where 'id is even') - (SELECT SUM(A) FROM Table Where 'id is odd')
FROM TABLE
WHERE 'condition'
有什么想法吗?
ps:我的数据库是Oracle 11g
最佳答案
你可以这样做:
select sum(case when mod(id,2)=0 then A else 0 end) -
sum(case when mod(id,2)=0 then 0 else a end)
from test
where yourCondition
SQLFiddle 是一个 MySql 示例,因为 Oracle 也有 mod
函数,因此它应该按原样工作。
在这里查看它的工作情况:http://sqlfiddle.com/#!9/1ba756/2
关于sql - 在单列上 : Algebraic operation on Aggregate functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36781419/