Postgres: Encontrar la posición de una fila específica dentro de un conjunto de resultados?
Estoy tratando de encontrar la manera de obtener la posición relativa de un elemento único en una consulta relativa a todos los artículos devueltos por la consulta.
Por ejemplo, la forma larga de obtener la respuesta sería:
1 2 3 4 5 6 7 8 9 |
single_item = SELECT * DESDE mesa DONDE id = 65 resultado = SELECT * DESDE mesa DONDE published_date < date_value x = 1 foreach ( resultado como elemento ): si ( elemento . id == single_item . id ): required_value = x endif x + + endforeach |
Tenemos dos opciones utilizando window functions
La primera es:
1 2 3 4 5 6 7 |
WITH summary AS ( SELECT t.*, ROW_NUMBER() OVER(ORDER BY t.published_date) AS position FROM TABLE t) SELECT s.* FROM summary s WHERE s.id = 65 |
La segunda sería sin utilizar WITH:
1 2 3 4 5 |
SELECT s.* FROM (SELECT t.*, ROW_NUMBER() OVER(ORDER BY t.published_date) AS position FROM TABLE t) s WHERE s.id = 65 |
"Trackback" Enlace desde tu web.