fix: solo un trabajador por fallo #2210
|
@ -37,7 +37,7 @@ BEGIN
|
||||||
WITH rankedWorkers AS (
|
WITH rankedWorkers AS (
|
||||||
SELECT sm.id,
|
SELECT sm.id,
|
||||||
st.workerFk,
|
st.workerFk,
|
||||||
ROW_NUMBER() OVER(PARTITION BY sm.id ORDER BY s2.`order`) AS rnk
|
ROW_NUMBER() OVER(PARTITION BY sm.id ORDER BY s2.`order`) rnk
|
||||||
jgallego marked this conversation as resolved
Outdated
|
|||||||
FROM vn.saleMistake sm
|
FROM vn.saleMistake sm
|
||||||
JOIN vn.saleTracking st ON sm.saleFk = st.saleFk
|
JOIN vn.saleTracking st ON sm.saleFk = st.saleFk
|
||||||
jgallego marked this conversation as resolved
carlosap
commented
esquema vn se puede eliminar esquema vn se puede eliminar
jgallego
commented
dins dels WITH si no es posa l'esquema myt falla. dins dels WITH si no es posa l'esquema myt falla.
|
|||||||
JOIN vn.`state` s2 ON s2.id = st.stateFk
|
JOIN vn.`state` s2 ON s2.id = st.stateFk
|
||||||
|
@ -46,7 +46,7 @@ BEGIN
|
||||||
WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo
|
WHERE t.shipped BETWEEN vDatedFrom AND vDatedTo
|
||||||
AND s2.code IN ('OK', 'PREVIOUS_PREPARATION', 'PREPARED', 'CHECKED')
|
AND s2.code IN ('OK', 'PREVIOUS_PREPARATION', 'PREPARED', 'CHECKED')
|
||||||
)
|
)
|
||||||
SELECT workerFk, COUNT(*) AS errors
|
SELECT workerFk, COUNT(*) errors
|
||||||
jgallego marked this conversation as resolved
Outdated
carlosap
commented
El AS no es necesario El AS no es necesario
|
|||||||
FROM rankedWorkers
|
FROM rankedWorkers
|
||||||
WHERE rnk = 1
|
WHERE rnk = 1
|
||||||
GROUP BY workerFk;
|
GROUP BY workerFk;
|
||||||
|
|
Loading…
Reference in New Issue
en este caso RANK() seria más apropiado?
ChatGpt, pero crec que el rank en el meu cas no em val.
Sí, puedes utilizar la función RANK() en lugar de ROW_NUMBER() para lograr un propósito similar, pero hay una diferencia importante entre estas dos funciones que puede afectar el resultado dependiendo de lo que necesitas:
ROW_NUMBER() asigna un número único a cada fila dentro de la partición de acuerdo con el criterio de ordenación especificado. Esto significa que incluso si dos filas tienen el mismo valor en las columnas de ordenación, cada una recibirá un número de fila diferente.
RANK() asigna el mismo rango a filas que tienen los mismos valores en las columnas de ordenación, con huecos en la secuencia de rangos si hay empates. Por ejemplo, si dos filas están empatadas en el primer lugar, ambas recibirán el rango 1, y el siguiente rango sería 3, no 2.
Dependiendo de tu caso de uso específico, el uso de RANK() podría significar que si hay varios trabajadores con el mismo valor de orden para un id de saleMistake, todos recibirán el mismo rango. Si deseas considerar a todos los trabajadores que comparten el valor más alto (o más bajo, según el orden) en el conjunto de order para un id específico, RANK() sería la función adecuada.