在同一个表中按两个值分组

时间:2014-11-25 16:14:32

标签: sql sqlite

我有一张格式

的表格
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

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