Olá,
Para esse desafio escolhi atualizar os preços utilizando a função random para gerar novos preços aleatórios dentro do intervalo aceitável. Como a função gera apenas números inteiros, para gerar valores decimais recorri a uma sugestão que localizei na internet que divide o número inteiro gerado por 9223372036854775808.0 que seria o valor máximo de um inteiro de 64 bits, também usei a função round para deixar com apenas 2 casas decimais.
Fiz o update dentro de uma transação (conhecimento do curso anterior a esse na carreira de Análise de Dados), assim consegui verificar se as alterações foram realizadas conforme o esperado gerando uma tabela com os valores mínimos e máximos por produto antes de aplicar ao banco de dados com o commit.
BEGIN TRANSACTION;
UPDATE produtos
set preco = ROUND((ABS(RANDOM()) / 9223372036854775808.0) * (100 - 20) + 20, 2)
where nome_produto = 'Bola de Futebol' and preco not BETWEEN 20 and 100;
UPDATE produtos
set preco = ROUND((ABS(RANDOM()) / 9223372036854775808.0) * (50 - 10) + 10, 2)
where nome_produto = 'Chocolate' and preco not BETWEEN 10 and 50;
UPDATE produtos
set preco = ROUND((ABS(RANDOM()) / 9223372036854775808.0) * (5000 - 80) + 80, 2)
where nome_produto = 'Celular' and preco not BETWEEN 80 and 5000;
UPDATE produtos
set preco = ROUND((ABS(RANDOM()) / 9223372036854775808.0) * (200 - 10) + 10, 2)
where nome_produto = 'Livro de Ficção' and preco not BETWEEN 10 and 200;
UPDATE produtos
set preco = ROUND((ABS(RANDOM()) / 9223372036854775808.0) * (200 - 80) + 80, 2)
where nome_produto = 'Camisa' and preco not BETWEEN 80 and 200;
SELECT nome_produto, MIN(preco), MAX(preco)
from produtos
GROUP by nome_produto;
COMMIT;