sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo debo manejar los datos clasificados x de y en PostgreSQL?

Si quieres el rango, haz algo como

SELECT id,num,rank FROM (
  SELECT id,num,rank() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4

O si realmente quiere el número de fila, use

SELECT id,num,row_number FROM (
  SELECT id,num,row_number() OVER (ORDER BY num) FROM foo
) AS bar WHERE id=4

Diferirán cuando tengas valores iguales en alguna parte. También hay dense_rank() si lo necesita.

Esto requiere PostgreSQL 8.4, por supuesto.