MySQL需要一个使用GROUPBY column_a的查询来忽略列_b的重复项
我正试图得到一份关于用户获奖数量的报告。即,玩家如何获得全部3项大奖,有多少人获得2项大奖,等等MySQL需要一个使用GROUPBY column_a的查询来忽略列_b的重复项,mysql,group-by,distinct,Mysql,Group By,Distinct,我正试图得到一份关于用户获奖数量的报告。即,玩家如何获得全部3项大奖,有多少人获得2项大奖,等等 +--------+--------+ | player | prize | +--------+--------+ | 1 | 1 | +--------+--------+ | 1 | 1 | +--------+--------+ | 1 | 2 | +--------+--------+ | 1 | 3 | +
+--------+--------+
| 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,但我不确定如何进一步消除重复。你说的
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项奖品,有多少人获得2项奖品,等等
+--------+--------+
| player | prize |
+--------+--------+
| 1 | 1 |
+--------+--------+
| 1 | 1 |
+--------+--------+
| 1 | 2 |
+--------+--------+
| 1 | 3 |
+--------+--------+
| 2 | 1 |
+--------+--------+
| 2 | 2 |
+--------+--------+
及
我需要它来忽略玩家1两次赢得奖品1
那么,当一个玩家多次获得同一奖项的事实被消除后,你不应该计算每个奖项的玩家数吗
SELECT COUNT(*) AS player_qty, prize AS prize_qty
FROM
(SELECT DISTINCT prize, player FROM prizes) AS T1
GROUP BY prize
试试这个:
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
你就在那里。最终的结果是,选择不同的计数*作为玩家数量,选择计数中的奖品数量*作为选择不同的奖品中的奖品数量,奖品中的玩家作为t2组按玩家作为t1组按奖品数量