¿Cómo obtener el número de fila en PostgreSQL cuando los resultados son ordenados por alguna columna?Numeración de filas en PostgreSQL
p. Ej.
SELECT 30+row_number() AS position, *
FROM users
ORDER BY salary DESC
LIMIT 30
OFFSET 30
que supone que la consulta sería la lista de volver de esta manera:
position | name | salary
31 | Joy | 4500
32 | Katie| 4000
33 | Frank| 3500
En realidad tengo que duplicar la cláusula ORDER
en la consulta para que sea funcional:
SELECT 30+row_number(ORDER BY salary DESC) AS position, *
FROM users
ORDER BY salary DESC
LIMIT 30
OFFSET 30
¿Hay de otra manera, ¿cómo devolver resultados ordenados y numerados sin la necesidad de duplicar el código?
Sé que esto puede ser resuelto mediante el incremento de alguna variable en la aplicación en sí, pero lo que quiero hacer esto en la capa de base de datos y volver a la aplicación ya numerada resultados ...
"lectura repetible de nivel de aislamiento" es todo lo que necesita ... pero de cualquier forma, debe asegurarse de que la conexión y la transacción permanezcan abiertas ... lo que podría ser muy difícil de hacer, dependiendo de la aplicación. –