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_price
和personal_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
我很感激任何帮助
解决方案
您需要group by 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
请参阅演示。
结果:
| partner_id | total_price | personal_price | partner_price |
| ---------- | ----------- | -------------- | ------------- |
| 1 | 2300 | 1200 | 1100 |
| 2 | 800 | 400 | 400 |
推荐阅读
- ios - 我的自定义 UIButton 不能用于替换 leftBarButtonItem
- javascript - 从函数中提取参数并将它们用作逻辑语句
- c# - 从字符串中提取 HTML 标记
- c# - WPF,数据网格提交中的 c# datepicker
- zend-framework - Zend framework 3 Mysqli 适配器问题
- java - 在 Android 上滚动 RecyclerView 时如何修复计时器?
- reactjs - React 服务器端渲染内存泄漏
- json - BigQuery 合并 JSON 文档
- .net - 如何使用 cmd 修改特定的代码行
- c - 为什么`int test {}`是C语言BNF中的函数定义