Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于不同货币的求和_Mysql - Fatal编程技术网

Mysql 基于不同货币的求和

Mysql 基于不同货币的求和,mysql,Mysql,我希望以英镑计算总价sum(price)但我需要将美元乘以0.74 +---------+-------+ | country | price | +---------+-------+ | GBP | 1 | | USD | 2 | | GBP | 3 | | USD | 4 | +---------+-------+ 我尝试过以下SQL: SELECT IF(`country` = 'USD', SUM

我希望以英镑计算总价
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\u mode=only\u full\u group\u by不兼容


只需在整个表中取一个价格总和,然后将美元价格乘以
0.74
,将其换算为英镑,否则使用英镑的原始值:

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


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

只需在整个表上取一个价格总和,然后通过乘以
0.74
将美元价格缩放为英镑,否则使用英镑的原始值:

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


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

除此之外应该是
country='USD'
除此之外应该是
country='USD'