Usa la expresión
field_c IS NOT NULL
como primer ORDER BY
artículo. Se evalúa como...FALSE
.. si NULLTRUE
.. si NO es NULO.
Y FALSE
(0) ordena antes de TRUE
(1). Funciona para cualquier tipo de datos y cualquier posible distribución de valores.
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;