sql - 使用 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 次,但要寻找最能代表他们的那个。
谢谢!
解决方案
您可以使用聚合,如下所示:
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;
推荐阅读
- linux - x86 汇编输入和输出
- html - 使用 Mailkit 在 .Net Core Application 中使用 Html 模板发送电子邮件
- angular - Angular 9 - [routerlink] 到实际网址(但添加查询参数)?
- r - pivot_wider 单行
- sql - MAX() OVER PARTITION 未按预期工作
- c - 在 printf 中使用变量和赋值的返回值
- docker - 从 Docker 容器连接到 CosmosDB
- python-3.x - 是否可以从值中获取 xpath 位置?
- azure - 默认情况下在新子网上应用 NSG/ASG (Azure)
- c# - 如何使用 C# 从 SqlConnection 返回多个结果