我正在尝试获取用户赢得的独特奖品数量的报告。即。玩家如何赢得所有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,但我不确定如何进一步消除重复。
答案 0 :(得分:3)
你说
玩家如何赢得所有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
答案 1 :(得分:0)
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
答案 2 :(得分:0)
试试这个:
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