查找PostgreSQL中同一表中匹配的条目数



我想用COUNT或类似的东西来查找这样一个表中有多少条相同:

id | skills
1    cooking
2    swimming
3    sports
4    cooking

所以我已经有两个循环像这样匹配:

1/2
1/3
1/4
2/3
2/4
3/4

但我希望在匹配过程中使用一个查询,该查询告诉我1/4有一个常见技能。

编辑:我会澄清我已经拥有的。

因此,匹配表如下所示:

id | idUser1 | idUser2 | MatchingScore
1       1        2           50
2       1        3           75
3       1        4           10
4       2        3           25
5       2        4           75
6       3        4           05

现在,我想通过计算他们在第一个表中有多少共同技能来生成matchingcore。示例:

id | skills
1    cooking, swimming
2    cooking, driving
3    swimming, sports
4    cooking, swimming

我正在寻找的查询的目标是获取id 1的烹饪和游泳,并与id 2的烹饪和驾驶进行比较,然后告诉我:";1〃;。所以基本上我只想比较有多少相同的条目

我不确定我是否理解您的需求。

在我的查询表中,tJOIN本身为ON t1.id < t2.id,如果t1.skills=t2.skills common_skills取值1,则为0:

SELECT t1.id::text || '/' || t2.id::text,
CASE WHEN t1.skills = t2.skills THEN 1 ELSE 0 END AS common_skills
FROM t AS t1
INNER JOIN t AS t2 ON t1.id < t2.id
ORDER BY t1.id, t2.id;

通过您的输入数据和我的查询,我得到:

匹配common_skills
1/2
1/3
1/4
2/3
2/4
3/4

最新更新