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