Postgresql: Как рассчитать AVE & SUM цен в разных валютах? - PullRequest
0 голосов
/ 03 июля 2018

У меня есть таблица продуктов в БД:

Table1:

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 Ответ

0 голосов
/ 03 июля 2018

Вы должны где-то иметь обменные коэффициенты. Например:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...