我有一张表格,其中有来自参与者的代码为倍数的代码,我想按多少参与者使用多少个不同代码来对它们进行分组。
这是我的桌子
| CodeID | ClientID |
--------------------
| 1 | 36 |
| 1 | 36 |
| 2 | 36 |
| 3 | 36 |
| 10 | 36 |
| 9 | 36 |
| 3 | 36 |
| 2 | 36 |
| 1 | 38 |
| 1 | 39 |
| 1 | 40 |
| 2 | 40 |
| 3 | 40 |
| 1 | 41 |
| 2 | 41 |
我尝试了Group By,但结果却只有一半:
SELECT COUNT(DISTINCT CodeID) AS Codes, ClientID FROM Entry GROUP BY ClientID ORDER BY Codes
给我这个
| Codes | ClientID |
--------------------
| 1 | 38 |
| 1 | 39 |
| 2 | 41 |
| 3 | 40 |
| 5 | 36 |
我要寻找的结果是这样:
| Codes | Clients |
-------------------
| 1 | 2 |
| 2 | 1 |
| 3 | 1 |
| 5 | 1 |
我不知道是否有一种方法用倍数GROUP BY或使用子查询...
要做到这一点答案 0 :(得分:2)
如果您想要每个代码ID的客户端数量,则应进行反操作
Input Javascript
答案 1 :(得分:0)
再加上一个GROUP BY。
SELECT cnt, count(CodeID)
FROM ( SELECT CodeID, count(distinct ClientID) cnt
FROM Entry
GROUP BY CodeID
) T
GROUP BY cnt
答案 2 :(得分:0)
根据您的回答,我编辑了代码以使其正常运行,非常感谢!
SELECT Codes, COUNT(ClientID) AS Clients
FROM ( SELECT COUNT(DISTINCT CodeID) AS Codes, ClientID
FROM Entry
GROUP BY ClientID) Result
GROUP BY Codes