Как запросить строки, которые имеют наибольшее значение столбца среди строк, имеющих одинаковое значение для одного из столбцов - PullRequest
4 голосов
/ 11 августа 2010

У меня есть таблица UserScores с такими данными:

Id    userId   Score
1       1       10
2       2       5
3       1       5

Я хотел бы иметь блок запроса или SQL, который может дать мне следующий вывод

Id    userId   Score
3       1       5
2       2       5

То есть я хотел бы выбрать строки, уникальные по «идентификатору пользователя», которые относятся к наибольшему значению столбца «id».

Ответы [ 4 ]

3 голосов
/ 11 августа 2010

Другое решение, которое будет работать на SQL Server 2000 (аналогично INNER JOIN выше, но немного быстрее):

SELECT id, userId, Score
  FROM UserScores
 WHERE id in (SELECT MAX(id)
                FROM UserScores
               GROUP BY userId
             ) 
 ORDER BY userId
2 голосов
/ 11 августа 2010

Как насчет

SELECT MAX(Id), userId, Score
FROM table
GROUP BY UserId
2 голосов
/ 11 августа 2010

Использование:

WITH summary AS (
    SELECT t.id,
                t.userid,
                t.score,
                ROW_NUMBER() OVER (PARTITION BY t.userid ORDER BY t.id DESC, t.score DESC) AS rank
        FROM USERSCORES sc)
SELECT s.id, 
            s.userid,
            s.score
    FROM summary s
 WHERE s.rank = 1
1 голос
/ 11 августа 2010
SELECT U2.id, U2.userId, U2.score
FROM UserScores U2
INNER JOIN (
  SELECT U1.userId, MAX(U1.Id) MaxId
  FROM UserScores U1
  GROUP BY U1.userId
) U3
ON U2.id = U3.MaxId and U2.userId = U3.userId
ORDER BY U2.userId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...