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

如何按日统计发送给不同接收者的消息数量?

按日统计不同接收者的消息数量实现方案

嘿,针对你要按日统计发送给不同接收者的消息数量这个需求,我结合你给出的messages数据表结构,整理了几种实用的实现方法,直接就能落地:

核心SQL实现(MySQL为例)

最基础的思路是把时间戳转换为日期格式,然后按「日期 + 接收者ID」分组统计消息条数,SQL代码如下:

SELECT 
    DATE(FROM_UNIXTIME(date_time)) AS message_date, -- 将时间戳转为日期格式
    receiver_id,
    COUNT(id) AS message_count -- 统计当日发给该接收者的消息总数
FROM messages
GROUP BY message_date, receiver_id -- 按日期和接收者维度分组
ORDER BY message_date DESC, message_count DESC; -- 按日期倒序、数量倒序排列,方便查看最新数据

扩展场景1:指定发送者统计

如果只需要统计某一个特定发送者的每日消息分发情况,只需加上WHERE条件过滤发送者ID即可:

SELECT 
    DATE(FROM_UNIXTIME(date_time)) AS message_date,
    receiver_id,
    COUNT(id) AS message_count
FROM messages
WHERE sender_id = 1 -- 替换为你要统计的目标发送者ID
GROUP BY message_date, receiver_id
ORDER BY message_date DESC, message_count DESC;

扩展场景2:显示接收者名称(关联用户表)

如果你的系统有users表存储用户信息,还可以关联查询显示接收者的用户名,让统计结果更直观:

SELECT 
    DATE(FROM_UNIXTIME(m.date_time)) AS message_date,
    u.username AS receiver_name, -- 显示接收者用户名
    COUNT(m.id) AS message_count
FROM messages m
JOIN users u ON m.receiver_id = u.id -- 关联用户表匹配用户名
GROUP BY message_date, u.id, u.username
ORDER BY message_date DESC, message_count DESC;

其他数据库适配说明

如果你的数据库不是MySQL,只需调整时间戳转日期的函数即可:

  • PostgreSQL:用TO_TIMESTAMP(date_time)::DATE替代DATE(FROM_UNIXTIME(date_time))
  • SQL Server:用CONVERT(DATE, DATEADD(SECOND, date_time, '1970-01-01'))进行转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:18:39