【发布时间】:2016-03-12 06:41:12
【问题描述】:
Mysql 表:
(用户,操作)
我可以运行什么查询来得到这个结果
用户 |每个用户计算 action1 |计算每个用户的 action2 |每个用户计算 action3
【问题讨论】:
-
在结果表中我们只想看到 3 个特定的动作。行示例:User1 5 14 9
标签: mysql group-by concatenation
Mysql 表:
(用户,操作)
我可以运行什么查询来得到这个结果
用户 |每个用户计算 action1 |计算每个用户的 action2 |每个用户计算 action3
【问题讨论】:
标签: mysql group-by concatenation
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
【讨论】:
action3total 有一个额外的),现在试试