如何解决查找同一个表 PostgreSQL 中有多少条目匹配
我正在寻找使用 COUNT 或类似的东西在这样的 TABLE 中有多少条目是相同的:
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
现在我想通过计算他们在第一个表格中有多少共同的技能来生成匹配分数。示例:
id | skills
1 cooking,swimming
2 cooking,driving
3 swimming,sports
4 cooking,swimming
我正在寻找的查询的目标是对 id 1 进行烹饪和游泳,并与 id 2 的烹饪和驾驶进行比较,然后告诉我:“1”。所以基本上我只想比较有多少相同的条目。
解决方法
我不确定我是否理解您的需求。
在我的查询表 t JOIN
与自身 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 | 0 |
1/3 | 0 |
1/4 | 1 |
2/3 | 0 |
2/4 | 0 |
3/4 | 0 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。