【问题标题】:Getting top 5 most associated item [duplicate]获得前5个最相关的项目[重复]
【发布时间】:2021-09-19 19:36:30
【问题描述】:

我有一个 Postgres 数据库,其中包含一个类似于下面的多对多关联表。

id | item_id | item_tag_id
 1     101       3
 2     102       3
 3     103       1
 4     104       2
 5     105       2

如何获得前 5 个最相关的item_tag_id

【问题讨论】:

  • 这还不清楚。最相关是什么意思?标签数量最多?最常用的标签?

标签: sql postgresql


【解决方案1】:

基本上,按项目分组并按行数排序(= 正确的多对多设计中的项目数):

SELECT item_id, count(*)
FROM   assoc_tbl
GROUP  BY 1
ORDER  BY 2 DESC
LIMIT  5;

还有一个极端情况:如何打破前 5 名的平局?要么定义条件(导致更多ORDER BY 表达式),要么考虑WITH TIES。见:

【讨论】:

    猜你喜欢
    • 2017-06-16
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多