代码之家  ›  专栏  ›  技术社区  ›  Tolga

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

  •  0
  • Tolga  · 技术社区  · 6 年前

    我在数据库中有一个产品表,如下所示:

    表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
    

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

    您知道在PostgreSQL查询中它是如何实现的吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   alostale    6 年前

    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)