如何为用户计算多列事件?

时间:2016-03-11 16:08:17

标签: mysql postgresql amazon-redshift

我有一个事件表,用于存储用户的事件,我想获得每个用户的两个特定事件的数量。

示例表称为“事件”,它有2列

user_id VARCHAR(50)
event_name VARCHAR(50)

user_ids都是唯一的,事件名称可以是login,sent_message,likes_post

例如,如何查询每个用户发送的总邮件数和每个用户的likes_posts数?

2 个答案:

答案 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