Я застрял в запросе в Postgres, и я очень расстроен. У меня есть таблица под названием «Оценки с тремя колонками»:В Postgres, как я могу усреднить последние 5 баллов за пользователя?
score, user_id and date
И я хочу получить среднее значение для всех пользователей за последние 5 баллов. Этот вопрос не совсем меня понял:
SELECT user_id,
ROUND(AVG(score)::numeric, 2) as sc_avg
FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY user_id) AS r,
sc.*
from mg.scores sc
WHERE score IS NOT NULL
ORDER BY date DESC) AS x
WHERE x.r >= 5
GROUP BY user_id;
Есть ли лучший способ ограничить последние 5 заданий на пользователя?
Вы должны добавить 'ORDER BY даты DESC' к' над() 'пункта, в противном случае row_number() не возвращает то, что вы думаете (кстати:' date' является * ужасным * именем для столбца) –