What data type for a column which can have three states: yes, no, unknown
You want boolean. 

It can have true (=yes), false (=no) and null (=unknown)

More details in the manual:
https://www.postgresql.org/docs/current/static/datatype-boolean.html



"Avoid nullable columns" is only a recommendation. If you need an "unknown" state, then NULL is exactly what you are looking for. It was specifically created to represent "unknown".

Postgres even support the keyword unknown for boolean expressions: where some_column is unknown is equivalent to where some_column is null if some_column is defined as boolean