Поскольку вы хотите получить некоторые агрегированные данные (place_id, date bed) и другие неагрегированные данные (bed_id и bed_num), вам нужно использовать подвыбор, чтобы выполнить агрегирование, а затем присоединиться к нему, как если бы он был анонимный просмотр:
SELECT bed_id, bed_num, place_id, bed_date
FROM beds
INNER JOIN (SELECT place_id, MAX(bed_date) FROM beds GROUP BY place_id) max_dates
ON max_dates.place_id = beds.place_id AND max_dates.bed_date = beds.bed_date
В противном случае ваша совокупная «группа по» будет применяться ко всем вашим столбцам, и вы получите (потенциально случайные) bed_id и bed_num из совокупности