【问题标题】:Return first x results from each group in SQL query从 SQL 查询中的每个组返回前 x 个结果
【发布时间】:2011-09-17 10:37:31
【问题描述】:

我有一个非常复杂的 SQL 查询,它返回数百个结果,细分如下:

    user 1    id: ##      stuff
    user 1    id: ##      stuff
    user 1    id: ##      stuff
     ....
    user 2    id: ###     stuff
    user 2    id: ###     stuff
    user 2    id: ###     stuff
    ....

大约 6 个用户。它已经完全按照我想要的方式排序了,我只想要每个用户的前 5 个。是否有捷径可寻?我正在使用 PostgreSQL 8.4 顺便说一句,我的 SQL 知识有限,所以如果可能的话,尽量做一些不太复杂的解释:D

【问题讨论】:

    标签: sql greatest-n-per-group postgresql


    【解决方案1】:

    应该这样做。

    SELECT t.user, t.id, t.stuff
        FROM (SELECT user, id, stuff,
                     ROW_NUMBER() OVER (PARTITION BY user ORDER BY id) AS RowNum
                  FROM YourTable) t
        WHERE t.RowNum <= 5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多