Gebruik de uitdrukking
field_c IS NOT NULL
als eerste ORDER BY
item. Het evalueert tot ...FALSE
.. als NULLTRUE
.. indien NIET NULL.
En FALSE
(0) sorteert voor TRUE
(1). Werkt voor elk gegevenstype en elke mogelijke verdeling van waarden.
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;