Tu pregunta es un poco confusa. Dices que te gustaría establecer el valor b
a un valor mínimo de la partición a
esa columna b
está en fila con, mientras que las filas que contienen b = 1
debe permanecer intacto.
Por lo que puedo ver en su pregunta como comentarios (supongo que es su resultado esperado), también desea obtener el valor mínimo que sigue a 1
dentro de una partición, por lo que básicamente desea el valor mínimo de b
que es mayor que 1
.
A continuación se muestra la consulta SQL que hace esto
UPDATE t1 alias
SET b = (
SELECT min(b)
FROM t1
WHERE alias.a = t1.a
AND t1.b > 1 -- this would get the minimum value higher than 1
GROUP BY a
)
WHERE alias.b > 1 -- update will not affect rows with b <= 1
Salida después de la actualización
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3