2017-11-24 9 views
0

私は、多くの通貨ペアがあるテーブルを持っていると言います。それは4つの列があります。私たちは、全体の束を持ってSQLite:2つの合計値とその差を見つけるには?

USD | 13.33 | GBP | 10

CURR_BOUGHT | AMT_BOUGHT | CURR_SOLD | AMT_SOLD

をので行が移入されるだろう、我々は10ポンドを持っているし、我々は13.33ドルのためにそれを交換すると言いますこれらの取引は様々な通貨ペアで行われます。今、すべての取引で購入した米ドルの総額と、すべての取引で売った米ドルの総額と、その2つの違いを調べたいとします。これら3つの数字を印刷するクエリを実行することは可能ですか?

このやや乱雑なクエリは、3つの数値を別々の行に出力します。私はそれが同じ単一の行の別々の列に3つの数字を印刷するように取得しようとしています。

SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD') UNION SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD') UNION SELECT (SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD')) - (SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD')) FROM TRADES;

+0

はい。これは可能ですが、あなたのタイトルには既にこれを行うための努力をするための情報が含まれています。あなたが苦労しているときには、ここに戻って問題の説明をし、あなたが書いたSQLを含めて、そのSQLに関連する特定の質問をすることができます。がんばろう。 –

+0

私は少し新しいここで、私は私の以前の努力を含める必要があることを認識していない。私はそれが問題をただ雲にするかもしれないと思ったが、私は今それを含めた。 – user8810083

答えて

1

あなたは労働組合との上に使用したコードは(それは労働組合が何をするかだ - 一緒に行の別のグループを追加する)あなたのそれぞれの行に1つの結果を与えます。それがすべての1つのクエリであるようにするには、ユニオンを取り除きカンマを使用して、個々のクエリのそれぞれをサブクエリにします。

SELECT (SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD')) AS AMT_BOUGHT, 
    (SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD')) AS AMT_SOLD, 
    (SELECT SUM(AMT_BOUGHT) FROM TRADES WHERE (CURR_BOUGHT = 'USD')) - (SELECT SUM(AMT_SOLD) FROM TRADES WHERE (CURR_SOLD = 'USD')) FROM TRADES AS DIFF; 
+0

ありがとう、これは動作します。私はまた、 'SELECT DISTINCT ...'に変更しなければならなかった。そうでなければ、同じ回答を持つ複数の行を返していた。私はまだ私のクエリがきれいでなく、そこに着くために少しのハッカーをやっているように感じますが、答えは正しいので、それは問題のすべてです。P – user8810083

+0

ああ、私はその部分を見ませんでした。最後にFROM TRADESを取り除く場合は、別個のものは必要ありません。現在、取引の各行についてすべての計算を行う必要があります。これは冗長です。 – DancingFool

+0

それは動作します。ありがとう! – user8810083

関連する問題