La tua domanda è un po' confusa. Dici che vorresti impostare il valore b
a un valore minimo dalla partizione a
quella colonna b
è in riga con, mentre le righe contenenti b = 1
dovrebbe rimanere intatto.
Da quello che posso vedere nella tua domanda come commenti (presumo che sia l'output previsto) vuoi anche ottenere il valore minimo che segue 1
all'interno di una partizione, quindi in pratica vuoi il valore minimo di b
che è maggiore di 1
.
Di seguito è riportata una query SQL che esegue questa operazione
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
Output dopo l'aggiornamento
a | b
---+---
1 | 0
1 | 1
2 | 1
2 | 2
3 | 1
3 | 2
3 | 2
4 | 1
4 | 3
4 | 3
4 | 3