[英]SQL - calculate average exchange rate for given periods and use in select
第一次海報在這里。
我有兩個表1)交易( T1 )2)匯率( T2 )。 T1持有幾種貨幣的每日交易,T2持有所有貨幣的每日匯率。
首先,我想計算給定期間每種貨幣的平均匯率(例如,2016年1月1日至2016年6月30日之間的美元匯率)。
然后,我想通過計算出的平均匯率得出交易和轉換后的貨幣金額,以便美元交易使用計算出的美元AV。 匯率,給我英鎊平均匯率,歐元給我歐元匯率。 每行的轉化率等。
得出平均率的SQL如下所示;
select currency,avg(b.exch_rate) as avg_rate
from uviexchrates b
where date_from >'2015-01-01' and date_from < '2015-12-31'
and b.rates_to='gbp' and b.client like 'gc' group by b.currency
以上給我的東西是;
currency avg_rate
AUD 2.04
CAD 1.96
CHF 1.47
USD 1.41
我對交易表的查詢是;
select currency,cur_amount from agltransact
where period between '201600' and '201606'
我追求的結果是;
cur_amount currency Av_rate converted_amount
-357000.00 EUR 1.12 -318153.46
6.55 EUR 1.12 5.84
6.55 EUR 1.12 5.84
27.77 USD 1.41 19.68
7.86 AUD 2.04 3.86
27.09 USD 1.41 19.20
54.98 CAD 1.96 28.11
計算最右邊的2列。 來自第一個查詢的av_rate和converted_amount是cur_amount * av_rate的結果。
題; 我如何結合這兩個查詢,以便產生以上結果?
希望是清楚的。
非常感謝
SELECT T1.cur_amount ,
T1.currency ,
T2.avg_rate ,
T1.cur_amount * T2.avg_rate AS converted_amount
FROM ( SELECT currency ,
cur_amount
FROM agltransact
WHERE period BETWEEN '201600' AND '201606'
) T1
LEFT OUTER JOIN ( SELECT currency ,
AVG(b.exch_rate) AS avg_rate
FROM uviexchrates b
WHERE date_from > '2015-01-01'
AND date_from < '2015-12-31'
AND b.rates_to = 'gbp'
AND b.client LIKE 'gc'
GROUP BY b.currency
) T2 ON T1.currency = T2.currency
我將使用left join
連接將第二個表連接到第一個查詢:
select t.currency, t.cur_amount, e.avg_rate, t_cur_amount / e.avg_rate
from agltransact t left join
(select e.currency, avg(b.exch_rate) as avg_rate
from uviexchrates e
where e.date_from >= '2016-01-01' and e.date_from <= '2016-06-30' and
e.rates_to = 'gbp' and
e.client like 'gc'
group by e.currency
) e
on t.currency = e.currency
where t.period between '201600' and '201606' ;
注意:我更改了第一個查詢中的日期以匹配文本中的描述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.