You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL合并双向关联记录并聚合总时长?

正确SQL实现方案

要把双向的记录(比如from_id=10,to_id=20和from_id=20,to_id=10)合并统计,核心是要把这两对视为同一组。可以用LEAST()和GREATEST()函数统一每组的id顺序,再分组求和:

SELECT
  LEAST(from_id, to_id) AS from_id,
  GREATEST(from_id, to_id) AS to_id,
  SUM(duration) AS total_duration
FROM your_table_name
GROUP BY LEAST(from_id, to_id), GREATEST(from_id, to_id);

说明:

  • LEAST(from_id, to_id)会取两个id中较小的值,GREATEST()取较大的值,这样不管是10→20还是20→10,都会被统一成from_id=10,to_id=20的组。
  • 你原来的SQL直接按原始的from_id和to_id分组,会把双向记录当成独立两组,自然无法合并统计。

执行上述SQL后,输出结果与你期望的一致:

from_id to_id total_duration
10      20    100
10      30    80
20      40    110

内容的提问来源于stack exchange,提问作者aim_thebest

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 23:48:28