【问题标题】:SQL count number of each actions performed on one object (using different tables)SQL count 对一个对象执行的每个操作的数量(使用不同的表)
【发布时间】:2015-01-14 21:37:24
【问题描述】:

我有两张表,一张是“活动”表

UserId    ActionID    companyId
2971       1            334
2971       4            334
3343       2            124
4416       3            231
4416       3            231

另一个是“ActionType”表,它包含以下列:

ActionID    ActionTypeName
1           Download
2           Buy
3           View
4           Click

我应该如何构造我的 SQL 来获取每个用户的每个不同的操作、名称和他们的计数?

我想要的结果是这样的:

UserId    ActionId    ActionTypeName  ActionCount
2971      1           Download        1
2971      4           Click           1
3343      2           Buy             1
4416      3           View            2

在 SQL 方面真的很吃力。

感谢您的帮助

【问题讨论】:

  • 敬畏,你知道你真的想让动作类型名称像 excel 中的数据透视表一样出现在顶部:D

标签: sql count distinct


【解决方案1】:

你可以这样使用:

SELECT a.UserId, a.ActionId, b.ActionTypeName, COUNT(*) AS ActionCount
FROM Activity a
INNER JOIN ActionType b
ON a.ActionId=b.ActionId
GROUP BY a.UserId, a.ActionId, b.ActionTypeName

【讨论】:

    【解决方案2】:

    使用 group by 子句进行计数,如下所示:

      Select u.userid, a.actionid,a.actiontypename , count(actionid)
       from activity u
       inner join actiontype a
       on a.actionid = b.actionid
       group by u.userid, a.actionid,a.actiontypename
    

    【讨论】:

      猜你喜欢
      • 2022-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多