Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.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 使用条件选择和求和选择distinc行_Mysql - Fatal编程技术网

Mysql 使用条件选择和求和选择distinc行

Mysql 使用条件选择和求和选择distinc行,mysql,Mysql,我有一个MySQL的选择,我不能让它工作。 我的简化的订单表如下所示: +----+------------+----------------+-------+----------------+ | id | partner_id | personal_price | price | modified_price | +----+------------+----------------+-------+----------------+ | 1 | 1 |

我有一个MySQL的选择,我不能让它工作。 我的简化的
订单
表如下所示:

+----+------------+----------------+-------+----------------+
| id | partner_id | personal_price | price | modified_price |
+----+------------+----------------+-------+----------------+
|  1 |          1 |            500 |   900 | NULL           |
|  2 |          1 |            700 |  1100 | 1400           |
|  3 |          2 |            400 |   800 | NULL           |
+----+------------+----------------+-------+----------------+
+------------+-------------+----------------+---------------+
| partner_id | total_price | personal_price | partner_price |
+------------+-------------+----------------+---------------+
|          1 |        2300 |           1200 |          1100 |
|          2 |         800 |            400 |           400 |
+------------+-------------+----------------+---------------+
I如果已设置,
总价
应为
修改后的价格
,如果未设置,
价格
。我还想按合作伙伴区分行,总结
总价格
个人价格
,并将差异计算为
合作伙伴价格

结果应该是这样的:

+----+------------+----------------+-------+----------------+
| id | partner_id | personal_price | price | modified_price |
+----+------------+----------------+-------+----------------+
|  1 |          1 |            500 |   900 | NULL           |
|  2 |          1 |            700 |  1100 | 1400           |
|  3 |          2 |            400 |   800 | NULL           |
+----+------------+----------------+-------+----------------+
+------------+-------------+----------------+---------------+
| partner_id | total_price | personal_price | partner_price |
+------------+-------------+----------------+---------------+
|          1 |        2300 |           1200 |          1100 |
|          2 |         800 |            400 |           400 |
+------------+-------------+----------------+---------------+
到目前为止,代码不起作用的是:

SELECT
  DISTINCT partner_id,
  SUM ( CASE WHEN price_modified IS NULL 
    THEN price 
    ELSE price_modified END ) as total_price,
  SUM ( presonal_price ),
  total_price - personal_price as parnter_price
  FROM orders

我感谢您提供的任何帮助

您需要
按合作伙伴id分组
,并且不要使用distinct:

select
  partner_id,
  sum(coalesce(modified_price, price)) total_price,
  sum(personal_price) personal_price,
  sum(coalesce(modified_price, price) - personal_price) partner_price
from orders
group by partner_id
请参阅。
结果:


您需要
按合作伙伴\u id进行分组
,而不使用distinct:

select
  partner_id,
  sum(coalesce(modified_price, price)) total_price,
  sum(personal_price) personal_price,
  sum(coalesce(modified_price, price) - personal_price) partner_price
from orders
group by partner_id
请参阅。
结果:


太好了,谢谢!我编辑了表格,其中每个
id
都是1,所以id只是一个行id,groupby是正确的
partner\u id
,谢谢!我编辑了一个表,其中每个
id
都是1,因此id只是一个行id,groupby是正确的
partner\u id