EXPLAIN (ANALYZE, TIMING OFF)
SELECT
GENERATE_SERIES(1, 1000000),
REVERSE(
(STRING_TO_ARRAY(REVERSE((SELECT t_field FROM test)), '$'))[1]
|| '-' ||
STRING_AGG(elem, '$' ORDER BY num))
FROM
(
SELECT
t.id, x.elem, x.num
FROM test t
LEFT JOIN LATERAL
UNNEST(STRING_TO_ARRAY(REVERSE(t_field), '$'))
WITH ORDINALITY AS x (elem, num) ON TRUE
) AS t
WHERE num > 1;