Postgres: Ordenar una columna nullable

Postgres: Ordenar una columna nullable
Photo by Sunder Muthukumaran / Unsplash

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.