Sql 如何识别引用同一元素的最常见类别?

Sql 如何识别引用同一元素的最常见类别?,sql,algorithm,postgresql,math,Sql,Algorithm,Postgresql,Math,我有两个关系:位置(类别,项目)和项目(项目) 每个项目可以在多个类别下列出 什么样的SQL查询可以用来确定从Location(category,item)中最常包含相同项的两个类别 注意:我正在寻找SQL语句,但我将此问题标记为算法/数学,因为如果无法提供SQL查询,我愿意接受算法形式的解决方案。您可以在SQL中使用join和groupby轻松完成此操作。将位置表连接到项上的自身,然后计算匹配项。按此降序排序,如果您想要匹配最多的一对,请选择第一对: select l1.category, l

我有两个关系:
位置(类别,项目)
项目(项目)

每个项目可以在多个类别下列出

什么样的SQL查询可以用来确定从
Location(category,item)
中最常包含相同项的两个类别


注意:我正在寻找SQL语句,但我将此问题标记为算法/数学,因为如果无法提供SQL查询,我愿意接受算法形式的解决方案。

您可以在SQL中使用
join
groupby
轻松完成此操作。将
位置
表连接到
上的自身,然后计算匹配项。按此降序排序,如果您想要匹配最多的一对,请选择第一对:

select l1.category, l2.category, count(*) as cnt
from location l1 join
     location l2
     on l1.item = l2.item and
        l1.category < l2.category
group by l1.category, l2.category
order by count(*) desc
limit 1;

.id应为。项目我无法编辑,因为我必须编辑至少6个字符。谢谢,你的解决方案有效!
select l1.category, l2.category, count(distinct l1.item) as cnt