Non è un problema di GROUP BY ma di ORDER BY.

Con php si puo' ordinare un array in ordine naturale con natsort, ma non so con postgres. Prova a cercare "natural sort postgresql".
Se non trovi nulla di utile, un escamotage è possibile.
Mettiamo che il campo section_name contiene 'Sezione xxx' con xxx da 1 a 999.

ORDER BY substr(section_name, 9, 1), substr(section_name, 10, 1), substr(section_name, 11, 1)

Non ho la possibilità di testare. Comunque l'idea è questa.

Se i numeri vanno oltre a 999 bisognerà adattare la clausola ORDER BY.