根据不同货币汇总

时间:2018-05-12 14:23:37

标签: mysql

我希望在GBP SUM(price)中总计总价格,但我需要将美元兑换成英镑乘以0.74

+---------+-------+
| country | price |
+---------+-------+
| GBP     |     1 |
| USD     |     2 |
| GBP     |     3 |
| USD     |     4 |
+---------+-------+

我试过这个SQL:

SELECT
    IF(`country` = 'USD',
        SUM(price * 0.74), 
        SUM(price)
    ) AS price
FROM `products`

但它正在返回错误:

  

这与sql_mode = only_full_group_by

不兼容

1 个答案:

答案 0 :(得分:2)

只需在整个表格中加上一个价格总和,然后乘以0.74将美元价格缩放到GBP,否则使用GBP的原始值:

SELECT
    SUM(CASE WHEN country = 'USD' THEN 0.74 * price ELSE price END) AS price
FROM products;

enter image description here

Demo

处理外汇汇率的一种更好的方法是建立一个单独的表格,将任何货币兑换成美元,然后再换回。然后,您可以简单地进行连接以获得所需的结果,而不必将外汇汇率硬编码到查询中。