次の2つのテーブルがあります。
sales
- id
- sales_price
- currency
- date
exchange
- currency
- conversion_to_usd
- date
販売テーブルには、、、、などaud
、任意の数の通貨を含めることができます。chf
nzd
総売上高を米ドルに換算する必要があります。以下は手動の例です。
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を超える通貨があるため、一般的なクエリを探していることに注意してください。