2016-04-21 10 views
2

2つの集計関数の代数演算を同じSQL Select Query(関数/プロシージャなしまたは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:私databseあなたはこのようにそれを行うことができますOracle 11gの

+0

データベースとは? –

+0

@JorgeCampos Oracle 11g –

+0

あなたに答えてください。 –

答えて

4

です:オラクルもそのまま動作するはずmod機能を持っているので

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のサンプルです。

ここをクリックしてください:http://sqlfiddle.com/#!9/1ba756/2

+0

申し訳ありませんOracle 11gを使用しています。私はより一般的なSQLの答えを探しています。私は偶数/奇数を例として使用しました。ここの難しさは私の "yourCondition"を見つけることです。それについてのアイデア? –

+3

@KurtMiller - 「もっと一般的」とはどういう意味ですか?このアプローチは間違っていますか?モデムコールを好きなテストに置き換えることができます。それとも、ダイナミックでなければならないという意味ですか? '条件'は別のテーブルからの値ですか?もしあなたが本当にあなたの質問でそれを説明する必要があります。 –

+0

@KurtMillerここで@AlexPooleに同意すると、あなたの質問をよりよく説明する必要があります。今、これは完全にそれに答える。 'Sum'関数の中の' case'は、あなたが尋ねた奇数と条件の条件です。また、あなたが尋ねたように1つのSQLコマンドにもあります。 –

関連する問題