繁体   English   中英

非唯一列的选择和计数属性

[英]Select and count attribute for non-unique column

我有一个人和活动的表-列都不是唯一的。 我需要通过不同活动的数量对每个用户进行排名,例如:

_________________ 
|PERSON|ACTIVITY|
-----------------
|Lars  | Sleep  |
|James | Eat    |
|Lars  | Sleep  | 
|Lars  | Sleep  | 
|Kirk  | Shred  |
|James | Shred  |
-----------------

拉尔斯三次出现,但反复进行相同的活动。 柯克出现一次,因此他在活动数量上与拉斯相同。 詹姆斯进行了两项不同的活动,因此他应该排名最高。

预期输出:

James - 2
Kirk - 1 
Lars - 1

(相同计数的顺序无关紧要)

我想出的解决方案包括将DISTINCT应用于人员列并遍历名称,为每个活动选择活动,然后应用DISTINCT,然后再加上COUNT。 感觉必须有更好的方法。

我想你只想要count(distinct)

select person, count(distinct activity) as num_activities
from t
group by person
order by num_activities desc;

您可以使用GROUP BY函数。 从您的表GROUP BY PERSON或ORDER BY COUNT中选择PERSON,COUNT(DISTINCT ACTIVITY)作为计数;

SELECT Person, COUNT(DISTINCT Activity) AS ActivityCount
FROM MyTable
GROUP BY Person
ORDER BY 2 DESC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM