sql - 在单列上 : Algebraic operation on Aggregate functions

标签 sql oracle11g

是否可以在同一个 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/

相关文章:

c# - SCOPE_INDENTITY() 不工作它返回 null 吗?

sql - 使用连接更新表,如果不存在则为 NULL

sql - 如何制作按月分组的年度报告?

sql - Oracle将重音字符转换为html格式

oracle - PIVOT,如何将非指定行转换为列?

database - 如何重新复制损坏的物理备用数据库?

sql - SQL中如何去除字符串中的重复项

sql - 使用 Groovy 批处理异构 SQL 准备语句?

php - 如何防止 PHP 中的 SQL 注入(inject)?

sql - ORA-00936 : missing expression error when inserting values