我在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查询中怎么可能?
答案 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)