mysql - 使用条件选择和求和选择不同的行

标签 mysql

我有一个 MySQL 选择,但无法使其工作。 我的简化 order 表如下所示:

+----+------------+----------------+-------+----------------+
| id | partner_id | personal_price | price | modified_price |
+----+------------+----------------+-------+----------------+
|  1 |          1 |            500 |   900 | NULL           |
|  2 |          1 |            700 |  1100 | 1400           |
|  3 |          2 |            400 |   800 | NULL           |
+----+------------+----------------+-------+----------------+

如果设置了,total_price 应该是 modified_price,如果没有设置,则应该是 price。我还想区分合作伙伴的行,汇总 total_pricepersonal_price 并将差异计算为 partner_price

结果应该如下所示:

+------------+-------------+----------------+---------------+
| 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

感谢您的帮助

最佳答案

您需要按partner_id分组并且不使用不同的:

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

请参阅demo .
结果:

| partner_id | total_price | personal_price | partner_price |
| ---------- | ----------- | -------------- | ------------- |
| 1          | 2300        | 1200           | 1100          |
| 2          | 800         | 400            | 400           |

关于mysql - 使用条件选择和求和选择不同的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56414952/

相关文章:

mysql - 如何在 SELECT 中使用 COUNT 别名?

mysql - 如何最好地合并四个大表

python - 无法解析模板中的剩余部分

mysql - 拉拉维尔 : How Can I Convert This Sql Statement to Eloquent or Query Builder?

MySQL 安装程序未在 Windows 7、32 位中安装 MySQL 服务器

php - 什么时候使用 PDO 常量 PDO::PARAM_STR?

mysql - Rails + MySQL - 从 3 个具有特定格式的表加载数据(非常慢 "has_many"关系)

php - mysql数据库中出现奇怪的字符

MySQL 查询显示的数据多于预期

mysql - mysql中需要重新准备prepared statement