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;