我需要一些帮助来计算MySQL中的唯一值和重复值。我想知道总共有多少记录,还有两次和三次有多少等等......
我需要使用UNION
还是其他什么?我认为SUM
对我来说是最好的解决方案,因为我将来可能会使用这些联接。
示例数据:
| custId | name |
|--------|--------|
| 1001 | Alex |
| 1001 | Alex |
| 1002 | Daniel |
| 1003 | Mark |
| 1002 | Daniel |
示例结果:
| total | twoTimes | threeTimes |
|-------|----------|------------|
| 3 | 2 | 0 |
提前致谢。
答案 0 :(得分:0)
只需要一个基本的group by
就可以了
SELECT YourValue, Count(YourValue)
FROM YourTable
GROUP BY YourValue
如果您只想要一个类别,例如唯一值ADD
HAVING Count(YourValue) = 1
答案 1 :(得分:0)
这是我的方法:
http://sqlfiddle.com/#!9/9411dc/3
SELECT c.cnt AS `times`, COUNT(c.name) cnt
FROM (SELECT name, COUNT(custId) cnt
FROM cust
GROUP BY name) c
GROUP BY c.cnt;
这不完全是你所问的(你要求使用非常难以实现的数据透视表)。因此,如果你想让它成为一个支点,你可以在这里阅读:MySQL pivot table
如果您确定最大重复次数非常小,则您的透视查询可能是:
http://sqlfiddle.com/#!9/9411dc/5
SELECT
SUM(IF(c.cnt=1,1,0)) AS `Unique`,
SUM(IF(c.cnt=2,1,0)) AS `Two times`,
SUM(IF(c.cnt=3,1,0)) AS `Three times`,
SUM(IF(c.cnt=4,1,0)) AS `Four times`
FROM (SELECT name, COUNT(custId) cnt
FROM cust
GROUP BY name) c