我想对GBP SUM(price)中的总价格求和,但是我需要通过乘以0.74将USD转换为GBP

+---------+-------+
| 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不兼容

最佳答案

只需将整个表的价格相加,然后乘以0.74将美元价格缩放为GBP,否则使用GBP的原始值:

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


mysql - 根据不同货币进行求和-LMLPHP

Demo

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

关于mysql - 根据不同货币进行求和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50307251/

10-11 10:38