【问题标题】:Count the result of a mysql count?计算一个mysql的结果?
【发布时间】:2011-12-29 10:17:25
【问题描述】:

我想知道如何使用 mysql 查询来解决以下问题,但我真的不知道如何继续我的第一次计数。

在一个表中有用户 ID 和他们拥有的项目 ID。

user_id | item
--------------
12      | 1
11      | 3
34      | 1
12      | 2
34      | 2
9       | 1
12      | 3

如果我按 user_id 分组并计算 user_id,我会得到一个用户列表以及他们赢得了多少项目,例如:

user_id | count(user_id) i.e. how many items have they won
-----------------------
9       | 1
11      | 1
12      | 3
34      | 2

我如何依次计算有多少用户赢得了 1、2 或 3 个项目,即。 count 计数的结果,按user_id的计数分组?

【问题讨论】:

    标签: mysql count group-by


    【解决方案1】:

    从选择中选择:

    select times_won, count(*)
    from (
        select user_id, count(*) as times_won
        from my_table
        group by 1
    ) x
    group by 1
    

    【讨论】:

    • 很好的答案!我有点尝试使用 COUNT 两次,但无法将它们完全组合在一起 :) 我也不熟悉 count(*) + GROUP BY foobar,这似乎在这里做得很好。泰。
    【解决方案2】:

    也许我没明白这个问题……你不能用这个吗?

    SELECT item, COUNT(DISTINCT user_id) 
    FROM ...
    GROUP BY item
    

    相反,如果您只是想从您发布的中间结果中计算行数,您可以使用这样的子查询:

    SELECT COUNT(*) FROM (
        SELECT user_id, COUNT(user_id) AS count
        FROM ...
        GROUP BY user_id
    ) AS intermediate_result
    GROUP BY count
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 2015-06-28
      • 2015-09-11
      相关资源
      最近更新 更多