Verwenden Sie den Ausdruck
field_c IS NOT NULL
als erstes ORDER BY
Artikel. Er ergibt ...FALSE
.. wenn NULLTRUE
.. wenn NICHT NULL.
Und FALSE
(0) sortiert vor TRUE
(1). Funktioniert für jeden Datentyp und jede mögliche Verteilung von Werten.
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;