我有成千上万的用户,我正在尝试找到他们最常见的细分。数据如下所示:
User Segment
User 1 Good
User 1 Good
User 1 Poor
user 2 Medium
user 2 Medium
User 3 Poor
在这种情况下,SQL代码将返回:
对用户1有利
用户2的媒体
用户3较差
我尝试使用Max函数,但这只会按字母顺序返回字符串,而不是与每个用户相关的最常见的字符串。实际上,该细分受众群经常会在用户之间变化。因此,它很可能会更改8到10次,但正在寻找最能代表它们的一次。
谢谢!
您可以使用row_number()
和count()
分析函数来执行此操作:
select user,segment from (select user, segment,cnt,row_number() over(partition by user,segment order by cnt desc) as rn from (select
user,segment,count(segment) over(partition by user,segment) as cnt
from table))
where rn=1;