首页 > 解决方案 > 使用 SQL 从一组用户中查找最常见的 varchar

问题描述

我有成千上万的用户,我正试图找到他们最常见的部分。数据如下所示:

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 次,但要寻找最能代表他们的那个。

谢谢!

标签: sqlpostgresqlfrequencytopmost

解决方案


您可以使用聚合,如下所示:

select user,
       coalesce(max(case when segment = 'Good' then segment end),
                max(case when segment = 'Medium' then segment end),
                max(case when segment = 'Poor' then segment end)
               )
from t
group by user;

推荐阅读