我想用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 |