select name, sum(value) as value from foo group by name order by abs(sum(value)) desc; name | value ------+------- bar | 105 rat | -66 foo | 30 (3 rows)