Вернуть первые x результатов из каждой группы в запросе SQL - PullRequest
1 голос
/ 17 июня 2011

У меня очень сложный запрос 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

1 Ответ

3 голосов
/ 17 июня 2011

Что-то вроде этого должно сделать это.

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
...