相关疑难解决方法(0)

获取 n 个分组类别并将其他类别合二为一

我有一个具有以下结构的表:

Contents (
  id
  name
  desc
  tdate
  categoryid
  ...
)
Run Code Online (Sandbox Code Playgroud)

我需要对这个表中的数据做一些统计。例如,我想通过分组和该类别的 id 来获取具有相同类别的行数。此外,我想n按降序限制它们的行,如果有更多可用类别,我想将它们标记为“其他”。到目前为止,我已经对数据库提出了 2 个查询:

n按降序选择行:

SELECT COALESCE(ca.NAME, 'Unknown') AS label
    ,ca.id AS catid
    ,COUNT(c.id) AS data
FROM contents c
LEFT OUTER JOIN category ca ON ca.id = c.categoryid
GROUP BY label
    ,catid
ORDER BY data DESC LIMIT 7
Run Code Online (Sandbox Code Playgroud)

选择其他行作为一:

SELECT 'Others' AS label
    ,COUNT(c.id) AS data
FROM contents c
LEFT OUTER JOIN category ca ON ca.id = c.categoryid
WHERE c.categoryid NOT IN ($INCONDITION)
Run Code Online (Sandbox Code Playgroud)

但是当我在 db 表中没有任何类别组时,我仍然会得到一个“其他”记录。是否可以在一个查询中进行,并使“其他”记录可选?

sql postgresql aggregate query-optimization sql-limit

6
推荐指数
1
解决办法
3098
查看次数