PostgreSQL:如何计算不同货币的价格的AVE和总和?

时间:2018-07-03 13:00:40

标签: postgresql

我在DB中有一个产品表,如下所示:

表1:

product_id | price | currency
1          | 230   | EUR
2          | 110   | EUR
3          | 100   | USD
4          | 80    | EUR
5          | 450   | PESO
6          | 200   | GBP
7          | 75    | USD

在这里,我想以美元计算平均价格和SUM价格。

您是否知道在Postgresql查询中怎么可能?

1 个答案:

答案 0 :(得分:1)

您需要在某个地方设置汇率。例如:

create table exchange (from_curr char(4), to_curr char(4), ratio numeric);
insert into exchange values ('EUR', 'USD', 1.17), ('USD','USD',1), ('PESO','USD',0.051), ('GBP','USD',1.32);

然后只执行将两个表连接起来的查询:

select sum(p.price * e.ratio) usd_sum, avg(p.price * e.ratio) usd_avg from product p, exchange e where p.currency = e.from_curr and e.to_curr='USD';
 usd_sum |       usd_avg        
---------+----------------------
 953.350 | 136.1928571428571429
(1 row)