私はアプリケーション テーブルを持っています。各アプリケーションはアクティビティを持つことができ、アクティビティが更新されるたびに activityupdate テーブルにログが記録されます。
activityupdate テーブル: - id - activity_id - user_id - 日付
アクティビティ テーブル: - id - application_id - ランク - ...
アプリケーションのすべてのアクティビティの最新のアクティビティ更新をアクティビティ ランク順に取得したい
私は持っている
SELECT au
FROM activityupdate au
INNER JOIN activity ac
ON au.activity_id = ac.id
INNER JOIN application ap
ON ac.application_id = ap.id
WHERE ap.id = 3
GROUP BY au, ac.rank
ORDER BY ac.rank ASC
しかし、これは機能しません。GROUP BY で au と ac.rank を設定する必要がある理由がわかりません。
ご協力いただきありがとうございます
編集、ありがとうゴードン、私は解決策を見つける
select *
from (SELECT au,
row_number() over (partition by au.activity_id order by au.date desc) as seqnum
FROM activityupdate au INNER JOIN
activity ac
ON au.activity_id = ac.id INNER JOIN
application ap
ON ac.application_id = ap.id
WHERE ap.id = 3
ORDER BY ac.rank ASC
) t
where seqnum = 1