【问题标题】:MySQL need a query using GROUP BY column_a to also ignore duplicates of column_bMySQL 需要使用 GROUP BY column_a 的查询来忽略 column_b 的重复项
【发布时间】:2011-07-19 18:32:20
【问题描述】:

我正在尝试获取有关用户赢得的独特奖品数量的报告。 IE。玩家如何赢得所有 3 个奖项,有多少人赢得了 2 个奖项,等等。

+--------+--------+
| player | prize  |
+--------+--------+
|   1    |   1    |
+--------+--------+
|   1    |   1    |
+--------+--------+
|   1    |   2    |
+--------+--------+
|   1    |   3    |
+--------+--------+
|   2    |   1    |
+--------+--------+
|   2    |   2    |
+--------+--------+

我需要的报告应该是这样的:

+-----------+------------+
| prize_qty | player_qty |
+-----------+------------+
|      3    |      1     |
+-----------+------------+
|      2    |      1     |
+-----------+------------+

以下代码关闭:

SELECT DISTINCT COUNT(*) as player_qty, prize_qty FROM 
(SELECT count( * ) AS prize_qty FROM `prizes` GROUP BY player)
as t1 GROUP BY player_qty

但它会返回:

+-----------+------------+
| prize_qty | player_qty |
+-----------+------------+
|      4    |      1     |
+-----------+------------+
|      2    |      1     |
+-----------+------------+

我需要它来忽略 #1 玩家两次赢得 #1 奖品,但我不确定如何进一步消除重复。

【问题讨论】:

    标签: mysql group-by distinct


    【解决方案1】:

    你说

    玩家如何赢得所有 3 个奖项,有多少人赢得了 2 个奖项,等等。

    我需要它来忽略 #1 玩家两次赢得 #1 奖品

    那么在消除玩家多次获得同一个奖项的事实后,您不应该计算每个奖项的玩家数吗?

    SELECT COUNT(*) AS player_qty, prize AS prize_qty
    FROM
      (SELECT DISTINCT prize, player FROM prizes) AS T1
    GROUP BY prize 
    

    【讨论】:

    • 你就在那里。最终结果是 this SELECT DISTINCT COUNT(*) as player_qty, Prize_qty FROM (SELECT count( * ) AS Prize_qty FROM (SELECT DISTINCT Prize, player FROM prizes) as t2 GROUP BY player) as t1 GROUP BY Prize_qty
    【解决方案2】:
    SELECT DISTINCT COUNT(*) as player_qty, prize_qty FROM 
    (SELECT count( * ) AS prize_qty FROM `prizes` GROUP BY player, prize)
    as t1 GROUP BY player_qty
    

    【讨论】:

      【解决方案3】:

      试试这个:

      SELECT DISTINCT COUNT(player) as player_qty, prize_qty FROM 
      (SELECT count( distinct prize ) AS prize_qty, player FROM `prizes` GROUP BY player)
      as t1 GROUP BY prize_qty
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多