[英]How can I count the number of messages to different people per day?
I have a table like this: 我有一张这样的桌子:
// messages
+----+----------------+-----------+-------------+-------------+
| id | content | sender_id | receiver_id | date_time |
+----+----------------+-----------+-------------+-------------+
| 1 | whatever1 | 1 | 3 | 1521097240 |
| 2 | whatever2 | 3 | 1 | 1521097241 |
| 3 | whatever3 | 1 | 3 | 1521097242 |
| 4 | whatever4 | 1 | 4 | 1521097243 |
| 5 | whatever5 | 1 | 5 | 1521097244 |
| 6 | whatever6 | 5 | 1 | 1521097245 |
+----+----------------+-----------+-------------+-------------+
Now I need to count the number of messages that user sender_id = 1
to different people. 现在,我需要计算用户
sender_id = 1
发送给其他人的消息数。 So assuming all those row are in the past day, then the result should be 3
. 因此,假设所有这些行都在前一天,则结果应为
3
。 Because sender_id = 1
have sent messages to receiver_ids = 3,4,5
. 因为
sender_id = 1
已将消息发送到sender_id = 1
receiver_ids = 3,4,5
。 How can I do that count in Mysql? 如何在Mysql中进行计数?
Here is what I've tried: 这是我尝试过的:
SELECT count(1) as sent_messages_num
FROM messages
WHERE sender_id = 1
AND date_time > UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 1 DAY))
So all I need it adding a grouping. 因此,我只需要添加分组即可。 But not sure how should I do that?
但是不确定我该怎么做?
Try using the following query: 尝试使用以下查询:
SELECT count(*) as sent_messages_num, receiver_id
FROM users
WHERE sender_id = 1
AND date_time > UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 1 DAY))
GROUP BY receiver_id
This will give you the number of messages per receiver. 这将为您提供每个接收者的消息数量。 After I read the answer again, I think the following might suit better:
再次阅读答案后,我认为以下内容可能更合适:
SELECT count(DISTINCT receiver_id) as sent_messages_num
FROM users
WHERE sender_id = 1
AND date_time > UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 1 DAY))
You need to use distinct
in COUNT
您需要使用
distinct
的COUNT
SELECT count(distinct receiver_id) as sent_messages_num
FROM users
WHERE sender_id = 1
AND date_time > UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 1 DAY))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.