Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回SQL查询中每个组的前x个结果_Sql_Greatest N Per Group_Postgresql - Fatal编程技术网

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

返回SQL查询中每个组的前x个结果,sql,greatest-n-per-group,postgresql,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个用户。它已

我有一个非常复杂的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知识有限,所以如果可能的话,试着做一些不太复杂的解释:像这样的解释应该可以

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