Použijte výraz
field_c IS NOT NULL
jako první ORDER BY
položka. Vyhodnocuje se jako ...FALSE
.. pokud je NULLTRUE
.. if NOT NULL.
A FALSE
(0) řadí před TRUE
(1). Funguje pro jakýkoli datový typ a jakoukoli možnou distribuci hodnot.
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;