In Tutoriales y tips Written by

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:
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:

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:

SELECT s.*
FROM (SELECT t.*,
ROW_NUMBER() OVER(ORDER BY t.published_date) AS position
FROM TABLE t) s
WHERE s.id = 65

Comentarios
(Visited 82 times, 1 visits today)

Last modified: 14 septiembre, 2017

Close