Yes, here x is the alias for the record, not for the json field. So you need to write the query like
select string_agg(x->>'letter', ' ') from ( select jsonb_array_elements(tiles) x from words_moves where gid=656 and action='play' order by played desc limit 5 ) y;
Чтобы сделать работу с сайтом удобнее, мы используем cookie и аналитический сервис «Яндекс.Метрика». Продолжая пользоваться сайтом, вы соглашаетесь с их использованием.