【问题标题】:How do I count multiple columns of events for users?如何为用户计算多列事件?
【发布时间】:2016-06-26 23:18:37
【问题描述】:

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

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

user_id VARCHAR(50)
event_name VARCHAR(50)

user_ids 都是唯一的,事件名称可以是 login、send_message、like_post 之类的东西

例如,我如何查询每个用户发送的消息总数和每个用户的点赞帖子数?

【问题讨论】:

  • 如果user_id 如您的问题所述是唯一的,则每个用户的计数将为 1。

标签: mysql postgresql amazon-redshift


【解决方案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

现在,您只需确保每个case 语句的when 部分符合您需要的条件。模式本身 - 在符合标准的情况下将一堆 1 相加,确实是实现您所追求的结果的关键。

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 2017-09-16
      • 1970-01-01
      • 1970-01-01
      • 2022-08-02
      • 2022-12-18
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      相关资源
      最近更新 更多