Luché para encontrar una respuesta en línea y descubrí que el siguiente método me funcionaba, basado en parte de la información anterior pero con un enfoque de actualización diferente. Publicación aquí en caso de que ayude a otros también.
Nota: para mi conjunto de datos, el rango es un cálculo fijo de una sola vez, no cambiará. Quería agregarlo como una columna para guardar ejecutando un cálculo cada vez que extraigo los datos de MySQL en Python.
Solución utilicé:
- rango establecido en 0 (como el anterior)
- crear una tabla temporal que contiene la consulta de selección para calcular el rango
- actualización de la tabla original con las filas calculadas.
nombres de las muestras utilizadas, rowid es el identificador único para cada fila, el valor es la métrica que se utiliza para determinar el rango para cada fila
SET @rank=0;
CREATE TEMPORARY TABLE rank_temp
AS
(SELECT rowid, value, @rank:[email protected]+1 AS rank FROM source_table ORDER BY value ASC);
UPDATE sourcetable a, rank_temp b
SET a.rank = b.rank
WHERE a.rowid = b.rowid;
Es un método crudo, pero ha trabajado en mi conjunto de datos.
¿En qué se basa el supuesto orden? ¿Alfabético? – JNK
No importa. Necesito tener en números todos los números del 1-3 (1-size) – Dejell