【问题标题】:sort by rows number where columns value are the same按列值相同的行数排序
【发布时间】:2016-08-18 14:47:04
【问题描述】:

我有这两张桌子:

类别:

还有另一个名为“thynk”的表:

thynk 表中的每一行都与一个类别相关联。

无论如何,我想知道是否可以选择包含大部分 thynk 的 categorie_id ? (使用 postgresql)

所以在这里我应该有这个结果:

 categorie_id
--------------
           0
           5
           3

【问题讨论】:

  • 是的,可以使用 Count、Group 和 Have,参见此处:postgresqltutorial.com/postgresql-having
  • 你有没有学会COUNT在SQL?您是否学会了如何按组(例如按类别)获取聚合?
  • 不,我刚刚发现 group by :)

标签: sql postgresql select count


【解决方案1】:

您可以按categoire_id 分组,计算每组的结果并相应排序:

SELECT   categorie_id, COUNT(*)
FROM     thynk
GROUP BY categorie_id
ORDER BY 2 DESC

【讨论】:

  • COUNT(*)SELECT 语句中并不是绝对必要的,以回答 OP。只要有SELECT categorie_id FROM thynk GROUP BY categorie_id ORDER BY COUNT(*) DESC
  • 好吧,如果我想按我的计数值排序并按数量限制不选择所有列,我可以在计数处传递参数吗?
  • @Fantasim:你什么意思?我不明白你在问什么(我怀疑其他人会)。
  • @ThorstenKettner Ahah 对不起我的英语.. 所以用 "Select categorie_id from thynk group by categorie_id order by count(*) desc;"我得到包含最多 thynk 的类别。但是 count( * ) 在所有 thynks 中排名,但如果我需要在最后 50 个 thynks 中排名?你明白我的意思吗? ://
  • @Fantasim:与其直接从 thynk 表中选择,不如从 thynk 上包含ORDER BY create_at DESC FETCH FIRST 50 ROWS ONLY(或LIMIT 50)的子查询中进行选择。
猜你喜欢
  • 2022-08-11
  • 2016-11-15
  • 2023-01-22
  • 2019-10-20
  • 2016-02-10
  • 1970-01-01
  • 2022-01-24
  • 2022-01-24
  • 2023-01-19
相关资源
最近更新 更多