【问题标题】:Get the sum() of a count(*)获取 count(*) 的 sum()
【发布时间】:2014-07-17 04:10:33
【问题描述】:

我有一个 MySQL 表:

  • id (int primary)
  • 用户名(varchar)
  • action (varchar) 可以是任何东西

每当用户执行某些操作时,我都会插入一条记录。我想用一个 SQL 语句检索用户数量和他们做了多少操作。我想要总结有多少用户有 0 个操作、1 个操作、2 个操作等...我的理由是按用户名分组以获得每个用户有多少个操作,然后将具有相同操作数的那些相加。

SELECT count(*), SUM(count(*)) 
from actions 
group by username 
order by SUM(count(*)) desc

这当然行不通,但或多或​​少地说明了我想做的事情。这可能吗?

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    试试这个:

    select numactions, count(*), min(username), max(username)
    from (select username, count(*) as numactions
          from actions
          group by username
         ) a
    group by numactions
    order by numactions;
    

    【讨论】:

      【解决方案2】:

      我想总结一下有多少用户有 0 个操作、1 个操作、2 个操作等...

      SELECT nbOfActions, COUNT(1) nbOfUsers
      FROM
          (SELECT COUNT(1) nbOfActions, username 
           FROM actions
          GROUP BY username) x
      GROUP BY nbOfActions
      

      如果需要,可以在外部查询中添加ORDER BY

      ORDER BY COUNT(1) DESC
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-01
        • 1970-01-01
        • 2022-12-05
        • 2013-02-06
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 2013-05-07
        相关资源
        最近更新 更多