получение наибольшего идентификатора из таблицы можно сделать с помощью
select max(id) ...
или с
select id from settings where rownum=1 order by id desc
(я предпочитаю первое решение)
или, как предложил Джон, но вам все равно понадобится подзапрос.
Еще одна вещь, в вашем примере может быть какая-то опечатка, я не вижу, откуда идет d, и нет смысла делать автоматическое соединение слева ...
Вот что я бы написал
SELECT
user_id, user_name,
name, value,
default
FROM
accounts join
(select user_id,name
from settings
where RANK() OVER (ORDER BY id DESC, PARTITION BY user_id) = 1) using(user_id)
LEFT OUTER JOIN default using ( name )
... все еще подзапрос