Postgres: Ordenar una columna nullable
Al PostgreSQL, uno de los problemas con los que nos podemos encontrar cuando ordenamos una columna nullable es que, dependiendo de nuestro problema, querremos que los NULL vayan antes o después del resto de filas:
- Por ejemplo, si estamos construyendo un importador y tenemos una columna
last_updated_at
, querremos que al ordenar por última actualización salgan primero las que nunca se han actualizado para poder actualizarlas por primera vez. - Si estamos ordenando una tabla de usuarios por nombre, probablemente querremos que los usuarios sin nombre salgan al final y no al principio.
Para hacer esto en Postgres tendremos una query así:
SELECT *
FROM metrics
ORDER BY last_updated_at ASC NULLS FIRST # También podemos usar NULLS LAST
LIMIT 10
Esta query nos devolvería las 10 métricas que hace más tiempo que no se actualizan. Además, si hay métricas que no se han actualizado nunca aparecerán las primeras.