从重复项中计算唯一值

时间:2017-04-04 15:11:24

标签: mysql

我在桌子上有以下数据。

Uid | comm | status
-------------------
12    23     eve
15    23     eve
20    23     mon
12    23     mon
20    23     eve
17    23     mon

我如何查询以获得低于结果以避免重复,并确保我计算uid为" eve"同样的uid出现在" mon"然后只计算uid" eve"?

count | status
-------------------
3         eve
1         mon

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您可以使用以下查询来选择每个Uid值:

SELECT Uid, MIN(status)
FROM mytable
GROUP BY Uid

<强>输出:

Uid MIN(status)
---------------
12  eve
15  eve
17  mon
20  eve

使用上述查询,您可以获得所需的结果:

SELECT status, count(*)
from (
   SELECT Uid, MIN(status) AS status
   FROM mytable
   GROUP BY Uid ) AS t
GROUP BY status

Demo here