首页 > 解决方案 > 两个字段匹配时的 SQL 查询以计算行数

问题描述

我正在尝试查看当两个字段在多行中匹配时是否可以计算行数。我有一个聊天系统,将消息历史记录存储在 sql 数据库中。我想查看在特定时间范围内(每月)从用户 1 向用户 2 发送了多少条消息。所以这是我的示例字段表:

Sending User | Receiving User | Message Text | Time Stamp
User 1       | User 2         | Hi           | 08/01/2021
User 3       | User 4         | Hello        | 08/01/2021
User 2       | User 1         | Hi Back      | 08/01/2021
User 1       | User 2         | Bye          | 08/02/2021
User 3       | User 4         | Goodbye      | 08/02/2021
User 1       | User 2         | Hello Again  | 08/03/2021

所以我正在寻找这样的输出:

Sending User | Receiving User | Message Count
User 1       | User 2         | 3
User 2       | User 1         | 1
User 3       | User 4         | 2

我还不能通过 Group By 语句的 Count 查询获得所需的结果。

我试过了:

SELECT Sending User, Receiving User, COUNT(Message Text)
FROM TABLE
GROUP BY Sending User, Receiving User

但到目前为止,我为每个用户提供了多行,所以我有几行用于相同的发送和接收用户组合。我只期待一个。

标签: sqlcount

解决方案


您想要的结果不考虑任何特定的日期范围,但您的示例查询给出了您想要的结果:

select sendinguser, ReceivingUser, Count(*) MessageCount
from t
where timestamp between '20210801' and '20210831'
group by sendinguser,ReceivingUser
order by sendinguser

请参阅示例 DB Fiddle


推荐阅读