返回SQL查询中每个组的前x个结果
我有一个非常复杂的SQL查询,返回几百个结果,具体如下:返回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个用户。它已
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