我有一张格式
的表格Ship_type | userid | Message
这些列都不是唯一的。 我想计算属于每种船型的有多少(唯一)用户ID,从而找出哪种船型最受欢迎。
示例:
Ship_type | userid| Message
-------------- ------- ----------
Sailboat | 34241 | hello
Sailboat | 34241 | hi
Sailboat | 34241 | I'm on a boat!
Fishingvessel | 31245 | yo
Fishingvessel | 98435 | hi there
在这里,我们看到有两种不同的渔船和一艘帆船。
如果我执行以下查询:
select ship_type, count(ship_type) FROM db1.MessageType5 GROUP BY ship_type ORDER BY count(ship_type) ASC;
我得到了
Sailboat | 3
Fishingvessel | 2
这是错误的 - 因为它计算属于每个ship_type的消息数。
期望的结果:
Fishingvessel | 2
Sailboat | 1
答案 0 :(得分:2)
如果您需要提供的结果,则必须COUNT
DISTINCT
个用户ID {和ORDER BY
... DESC
:
SELECT ship_type, COUNT(DISTINCT userid) as cnt
FROM db1.MessageType5
GROUP BY ship_type
ORDER BY cnt DESC