我有一个事件表,用于存储用户的事件,我想获得每个用户的两个特定事件的数量。
示例表称为“事件”,它有2列
user_id VARCHAR(50)
event_name VARCHAR(50)
user_ids都是唯一的,事件名称可以是login,sent_message,likes_post
例如,如何查询每个用户发送的总邮件数和每个用户的likes_posts数?
答案 0 :(得分:1)
这是您可以使用的查询模式:
select user_id,
sent_message_count=sum(case when event_name = 'Sent Message' then 1 else 0 end),
liked_post_count=sum(case when event_name = 'Liked Post' then 1 else 0 end),
from events
group by user_id
现在,您只需确保每个when
语句的case
部分符合您需要的条件。模式本身 - 总结标准适用的一堆1,实际上是实现你所追求的结果的关键。
答案 1 :(得分:0)
SELECT user_id,
SUM(IF(event_name = 'sent_message', 1, 0)) AS sent_message,
SUM(IF(event_name = 'liked_posts', 1, 0)) AS liked_posts
FROM `events`
GROUP BY user_id