Más simple:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
¿Cómo?
Postgres tiene un boolean adecuado tipo (a diferencia de algunos otros RDBMS). Puede ordenar por él como por cualquier otro tipo de datos. Y puede ser NULL como cualquier otro tipo de datos. El orden de clasificación predeterminado es:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1) se evalúa como FALSE para todos los valores excepto -1 - que evalúa TRUE y ordena al último. Simplemente agregue sort como secundario ORDER BY elemento.
Alternativa equivalente:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>violín aquí
Sqlfiddle antiguo