I don't know much about PostGIS, but would it be possible to make a view out of your table which generates a column that contains either a colour value or perhaps some sort of calculated percentile that you could then use to style. This would then technically keep your Raw data away from data used to style it. For example, I'm sure you could (don't ask me how, I'm an Oracle man) add a new column in your view called something like GDPPercentile, which would be 100 for whatever row had the highest value, 0 for whatever had the lowest value, and the values in between for everything else. From that you could use GeoServer SLDs Comparison Operators to assign colours to various percentile ranges, using
I hope that makes sense (it does in my head, but articulating it was a whole different story). Like I said, I don't know anything about the capabilities of PostGIS, so it might not be possible.