ログに記録された「ステータス変更」の表があります。ユーザーの最新のステータス変更を見つける必要があり、それが a) 特定の「タイプ」のステータス変更 ( s.new_status_id
) であり、b) 7 日以上前の変更 ( s.change_date
) である場合、それを結果に含めます。現在のクエリでは、特定のユーザーの最新から 2 番目のステータス変更が返されることがありますが、これは望ましくありません。最後の変更のみを評価したいのです。
そのユーザーの最新のステータス変更である場合にのみレコードが含まれるように、このクエリを変更するにはどうすればよいですか?
クエリ
SELECT DISTINCT ON (s.applicant_id) s.applicant_id, a.full_name, a.email_address, u.first_name, s.new_status_id, s.change_date, a.applied_class
FROM automated_responses_statuschangelogs s
INNER JOIN application_app a on (a.id = s.applicant_id)
INNER JOIN accounts_siuser u on (s.person_who_modified_id = u.id)
WHERE now() - s.change_date > interval '7' day
AND s.new_status_id IN
(SELECT current_status
FROM application_status
WHERE status_phase_id = 'In The Flow'
)
ORDER BY s.applicant_id, s.change_date DESC, s.new_status_id, s.person_who_modified_id;