私は Postgres でのクエリに行き詰まっており、かなりイライラしています。私は3つの列を持つスコアと呼ばれるテーブルを持っています:
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 つのジョブを制限するより良い方法はありますか?