2

次の2つのテーブルがあります。

sales
- id
- sales_price
- currency
- date

exchange
- currency
- conversion_to_usd
- date

販売テーブルには、、、、などaud、任意の数の通貨を含めることができます。chfnzd

総売上高を米ドルに換算する必要があります。以下は手動の例です。

sales
(10.20, 'NZD', '2012-10-01')
(4.15,  'AUD', '2012-09-01')
...

exchange
('AUD', 1.02, '2012-08-01')
('AUD', 1.03, '2012-09-01')
('NZD', 0.89, '2012-10-01)

  10.20 (cost NZD) * 0.89 (NZD conversion) 
+ 4.15 (cost AUD) * 1.03 (AUD conversion)
= 13.3525

個々の通貨でそれを行うことはできますが、特定の日付のすべての合計を取得できるようにクエリを一般化するのに苦労しています。

SELECT SUM(sales_price) * conversion_to_usd FROM sales
    INNER JOIN exchange
    using (currency, date) 
    WHERE currency = "AUD" and date = "2012-09-01"

日付が与えられた場合、この結合されたクエリをどのように実行しますか?

次の形式の結果を取得したいと思います。

sales_in_usd    currency       date
100             AUD            2012-01-01
150             CAD            2012-01-01
40              DKK            2012-01-01
36              JPY            2012-01-01
etc...

30を超える通貨があるため、一般的なクエリを探していることに注意してください。

4

1 に答える 1

1

GROUP BYコマンドを試しましたか?

SELECT SUM(sales_price) * conversion_to_usd AS 'Sales in US$', 
    currency AS 'Currency', 
    date AS 'Date' FROM sales
INNER JOIN exchange
    USING (currency, date) 
WHERE date = "2012-09-01"
GROUP BY currency;
于 2012-06-03T07:58:31.760 に答える