Я считаю, что PostgreSQL (как минимум 8.3) потребует, чтобы выражения DISTINCT ON
соответствовали исходным ORDER BY
выражениям. И.Е. Вы не можете использовать DISTINCT ON (accountid)
, когда у вас есть ORDER BY score DESC
. Чтобы это исправить, добавьте его в ORDER BY
:
SELECT DISTINCT ON (accountid) *
FROM scoretable
ORDER BY accountid, score DESC
LIMIT 10;
Использование этого метода позволяет выбрать все столбцы в таблице. Он будет возвращать только 1 строку на учетную запись, даже если для оценки есть повторяющиеся значения 'max'.
Это было полезно для меня, так как я не нашел максимальный балл (что легко сделать с помощью функции max ()), но в последнее время для балла был введен балл для аккаунта.