返回SQL查询中每个组的第一个x结果

时间:2011-06-17 18:57:02

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

我有一个非常复杂的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 btw,我的SQL知识有限,所以如果可能的话,尝试做出任何解释都不太复杂:D

1 个答案:

答案 0 :(得分:3)

这样的事情应该这样做。

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