Sua pergunta está um pouco confusa. Você diz que gostaria de definir o valor
b
para um valor mínimo da partição a
essa coluna b
está na linha com, enquanto as linhas contendo b = 1
deve permanecer intocado. Pelo que posso ver em sua pergunta como comentários (suponho que seja sua saída esperada), você também deseja obter o valor mínimo que segue
1
dentro de uma partição - então você basicamente quer o valor mínimo de b
que é maior que 1
. Abaixo está a consulta SQL que faz isso
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
Saída após atualização
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3