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

如何在SQL中按多列分组?并统计用户消息交互总数量

消息交互总数统计的SQL查询方案

现有表tb,包含sender_ID、Receiver_ID、message_ID字段,需求是统计每个用户的消息交互总数量(发送消息数与接收消息数之和)。

你之前写的语句存在问题:

Select COUNT(MESSAGE_ID)
from tb
group by sender_id, reciever_id 

按sender_id和receiver_id分组会把每一对发送者-接收者的组合单独统计,根本拿不到单个用户的总交互数。

正确的查询语句如下:

SELECT user_id, COUNT(message_id) AS total_interactions
FROM (
    -- 取出所有发送消息的用户记录
    SELECT sender_ID AS user_id, message_id
    FROM tb
    UNION ALL
    -- 取出所有接收消息的用户记录
    SELECT Receiver_ID AS user_id, message_id
    FROM tb
) AS user_messages
GROUP BY user_id

逻辑说明

  • 用UNION ALL把发送者和接收者的记录合并,每条消息会对应两条记录(一条归属发送用户,一条归属接收用户)
  • 最后按user_id分组统计message_id的数量,得到的就是该用户发送与接收消息的总数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 20:22:37