Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL需要一个使用GROUPBY column_a的查询来忽略列_b的重复项_Mysql_Group By_Distinct - Fatal编程技术网

MySQL需要一个使用GROUPBY column_a的查询来忽略列_b的重复项

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 | +

我正试图得到一份关于用户获奖数量的报告。即,玩家如何获得全部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,但我不确定如何进一步消除重复。

你说的

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组按奖品数量