sql - 是否有一个 SQL 函数来计算地址相同但名称相似的唯一 ID?
问题描述
姓名 | 地址 | ID |
---|---|---|
卡尔史密斯 | 14 独角兽 ln。 | 1 |
卡尔·史密斯 | 14 独角兽 ln。 | 2 |
安东尼贝尔 | 1734 大学大道。 | 3 |
卡尔·史密斯 | 14 独角兽 | 4 |
珍妮特·威尔逊 | 1734 大学 | 5 |
珍妮特·威尔逊 | 1734 大学 | 6 |
如何计算名称相似的每个地址的唯一客户 ID?数据集太长,无法使用 ilike 'carl smith',然后 ilike 'janet wilson'。这条线需要足够宽,以包含任何可能出现的类似名称。
期望的结果:
地址 | 身份证号码 |
---|---|
14 独角兽 ln。 | 3 |
1734 大学 | 2 |
如果我能获得与同一地址相关联的相似名称的列表,那也会很有帮助。
期望的结果 Pt。2:
地址 | 相似的名字 |
---|---|
14 独角兽 ln。 | 卡尔·史密斯,卡尔·史密斯,卡尔·史密斯 |
1734 大学 | 珍妮特威尔逊,珍妮特威尔逊 |
解决方案
如果唯一的区别是名称的大小写,则使用upper()
/ lower()
。对于您指定的结果:
select address,
count(*) as num_names,
array_agg(name) as distinct_names
from t
group by address, lower(name);
如果您必须处理其他变体,例如中间声母,这将变得更加棘手。如果这是您的问题,请使用适当的样本数据提出一个新问题,并明确解释如何识别两个名称是否“相似”。
推荐阅读
- rust - 从 SliceStorage 和 SliceStorageMut 中提取原始切片
- vb.net - 如何使每个人在登录时都有一个单独的帐户
- networking - 使用 MAC 地址的原始套接字的目标应用程序
- node.js - 如何使用 GitHub 页面或 InfinityFree 托管可以处理端口请求的 node.js Web 服务器
- html - Chrome 输入自动填充值在用户键入输入时未获得过渡样式
- python-requests - 上传文件并提交后获取url
- android - REST api 获取请求的来源
- pdf - Chilkat PDF 签名自定义字段
- c++ - 为什么我的设置器不能被激活,尽管我已经为参数做了指针?
- excel - 变量中的工作表名称包括文件路径