Използвайте израза
field_c IS NOT NULL
като първи ORDER BY
вещ. Той се оценява на ...FALSE
.. ако е NULLTRUE
.. ако НЕ е NULL.
И FALSE
(0) сортира преди TRUE
(1). Работи за всеки тип данни и всяко възможно разпределение на стойности.
SELECT field_a,
row_number() OVER (PARTITION BY field_b
ORDER BY field_c IS NOT NULL, field_c) AS row_number
FROM test_table
ORDER BY row_number;