首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在数组中找到最常见的n个元素

如何在数组中找到最常见的n个元素
EN

Stack Overflow用户
提问于 2019-05-31 02:54:48
回答 1查看 64关注 0票数 0

我有一个大约30K属性的数据库。每处房产都有1到200个租户(大约10万个租户)。我正在寻找最常见的n租户分组(其中n通常是3、4或5)。

假设n= 3。

代码语言:javascript
运行
复制
Property 1 -<br> 
 Tenants - A, B, C, D, E<br> 
Property 2 - <br> 
 Tenants - A, D, E, F, G<br> 
Property 3 - <br> 
 Tenants - A, B, G, H, I<br> 
Property 4 - <br> 
 Tenants - A, J, K, L, M<br> 

在这种情况下,即使A有4次出现,3个公共元素的最频繁计数是属性1和2中的A、D、E的2个实例。

我不知道从哪里开始将其设置为可重用的算法。能不能请比我聪明得多的人给我指个方向?非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2019-05-31 05:25:18

假设您的数据库定义了属性和租户之间的多对多关系,您可以自连接关系表以获得该结果。下面是一个使用n=3的示例。

代码语言:javascript
运行
复制
SELECT p1.tenant, p2.tenant, p3.tenant, COUNT(p1.property) occurrences
FROM property_tenants p1
JOIN property_tenants p2 ON p1.property = p2.property AND p1.tenant < p2.tenant
JOIN property_tenants p3 ON p1.property = p3.property AND p2.tenant < p3.tenant
GROUP BY p1.tenant, p2.tenant, p3.tenant
ORDER BY occurrences DESC

老实说,我真的不知道它在处理大量数据时会有多好的表现。我可以看到它在逻辑上是有效的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56384085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档