【问题标题】:How to count actions per individual in the same table?如何计算同一张表中每个人的操作?
【发布时间】:2016-03-12 06:41:12
【问题描述】:

Mysql 表:

(用户,操作)

我可以运行什么查询来得到这个结果

用户 |每个用户计算 action1 |计算每个用户的 action2 |每个用户计算 action3

【问题讨论】:

  • 在结果表中我们只想看到 3 个特定的动作。行示例:User1 5 14 9

标签: mysql group-by concatenation


【解决方案1】:
SELECT user, count(action1), count(action2),count(action3) GROUP BY user

您可以按用户分组并返回每个操作的记录数。如果您有 action type 列,您可能需要在计数中使用 case 语句。看起来像这样:

SELECT user, 
       SUM(CASE WHEN actiontype=1 THEN 1 ELSE 0 END) as Action1Total, 
       SUM(CASE WHEN actiontype=2 THEN 1 ELSE 0 END) as Action2Total,
       SUM(CASE WHEN actiontype=3 THEN 1 ELSE 0 END) as Action3Total
GROUP BY user

您也可以改用COUNT。因为默认CASE 为空,而COUNT 不计入null

 COUNT(CASE WHEN actiontype=1 THEN 1 END) as Action1Total

【讨论】:

  • 我尝试运行此查询,但出现错误:SELECT user_id, SUM(CASE WHEN action="DELETE" THEN 1 ELSE 0 END) as Action1Total, SUM(CASE WHEN action="CREATE " THEN 1 ELSE 0 END) as Action2Total,SUM(CASE WHEN action="Finish" THEN 1 ELSE 0 END) as Action3Total) 来自 tbl_audit_trail GROUP BY user_id
  • @devlincarnate 在action3total 有一个额外的),现在试试
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-18
  • 1970-01-01
相关资源
最近更新 更多