última ventana valores una tipos tabla ser parametros para orden opcionales línea linea las instrucción instrucciones función funciones debe crear correcto con agregadas sql django postgresql window-functions

sql - valores - Usando funciones de ventana en una declaración de actualización



orden correcto de las instrucciones para crear una función en línea (1)

El error es de postgres no django. Puedes reescribir esto como:

WITH v_table_name AS ( SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key FROM table_name ) UPDATE table_name set table_name.col1 = v_table_name.rn FROM v_table_name WHERE table_name.primary_key = v_table_name.primary_key;

O alternativamente:

UPDATE table_name set table_name.col1 = v_table_name.rn FROM ( SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key FROM table_name ) AS v_table_name WHERE table_name.primary_key = v_table_name.primary_key;

Esto funciona. Acabo de probarlo en postgres-9.6. Aquí está la sintaxis de UPDATE (ver la lista de opciones opcional).

Espero que esto ayude.

Tengo una gran tabla de PostgreSQL a la que accedo a través de Django. Debido a que el ORM de Django no admite las funciones de la ventana, debo incluir los resultados de una función de la ventana en la tabla como una columna regular. Quiero hacer algo como esto:

UPDATE table_name SET col1 = ROW_NUMBER() OVER ( PARTITION BY col2 ORDER BY col3 );

Pero me sale ERROR: cannot use window function in UPDATE

¿Alguien puede sugerir un enfoque alternativo? Pasar la sintaxis de la función de ventana a través del método .raw () de Django no es adecuado, ya que devuelve un RawQuerySet, que no admite otras funciones de ORM como .filter (), que necesito.

Gracias.