mysql连接具有相同列值的两行并计算某些列值并返回一行中的所有行

Posted

技术标签:

【中文标题】mysql连接具有相同列值的两行并计算某些列值并返回一行中的所有行【英文标题】:mysql join two rows with same column value and calculate certain column values and return all rows in one row 【发布时间】:2018-09-06 09:21:58 【问题描述】:

我有一个表名agents_commission 有列 id、agent_id、deal_id、commission、deal_date。

我想从agents_commission 中选择agent_id, commission 其中月份(date_deal) = '$month' 和年(date_deal) ='$year';

但如果表中有一些行具有相同的agent_id,则将相同的行加入一行并计算commission 值,如第 1、2 行中的行 66666.7 + 100000

成为最终的 fetch_assoc

array('agent_id'=>1, 'commision'=>166666.7);

谢谢

【问题讨论】:

【参考方案1】:

当您只想按一列(agentid)分组时,您不能选择全部。您可以执行以下操作

select agent_id, sum(commission) as commission from temp where MONTH(deal_date) = '09' and year(deal_date) ='2018' group by agent_id;

GROUP BY 子句中使用的 SELECT 语句只能包含列名、聚合函数、常量和表达式。

参考https://dev.mysql.com/doc/refman/5.5/en/group-by-modifiers.html

【讨论】:

非常感谢 ^^【参考方案2】:

尝试使用 group by 和聚合:

select agentid, sum(commission) as commission
from agents_commission
where month(date_deal) = '$month' and year(date_deal) ='$year';
group by agentid

【讨论】:

以上是关于mysql连接具有相同列值的两行并计算某些列值并返回一行中的所有行的主要内容,如果未能解决你的问题,请参考以下文章

连接具有相同值的行的列值(不同列的)

如何在MySql中返回具有相同列值的行

如何将具有相同列值的mysql行分组为一行?

如何在ClickHouse中将具有相同列值的mysql行分组为一行?

在 Python 中连接具有相同第一列值的 CSV 文件的所有行

计算具有与相同 ID 相关的不同列值的结果