It can estimate though, using per-column statistics. ANALYZE (and the autoanalyze background process) update these in PostgreSQL.
These stats are a huge part of cost-based query optimisation, which all major DBMSs do these days.
Details here: http://www.postgresql.org/docs/9.3/static/planner-stats.html