1 - Fiz uma visualizacao para os produtos que nao se encaixam na faixa de preco aceitavel
SELECT * from produtos
where nome_produto = 'Bola de Futebol' and preco not BETWEEN 20 aND 100;
SELECT * from produtos
where nome_produto = 'Chocolate' and preco not BETWEEN 10 aND 50;
SELECT * from produtos
where nome_produto = 'Celular' and preco not BETWEEN 80 aND 5000;
SELECT * from produtos
where nome_produto = 'Livro de Ficção' and preco not BETWEEN 10 aND 200;
SELECT * from produtos
where nome_produto = 'Camisa' and preco not BETWEEN 80 aND 200;
2 - Optei por atualizar os precos desses produtos para uma media do preco dos produtos que se encaixam na afixa de preco aceitavel. Fiz para o primeiro e repliquei para os outros.
select Round(avg(preco),2) from produtos
where nome_produto = 'Bola de Futebol' and preco BETWEEN 20 aND 100;
3 - Fiz o update utilizando um case dentro de uma transaction para que, caso houvessem erros, eu pudesse usar um rollback e voltar os dados para seu estado original.
BEGIN TRANSACTION;
UPDATE produtos
set preco = CASE
when nome_produto = 'Bola de Futebol' then
(SELECT Round(avg(preco),2) from produtos where nome_produto = 'Bola de Futebol' and preco BETWEEN 20 aND 100)
when nome_produto = 'Chocolate' then
(SELECT Round(avg(preco),2) from produtos where nome_produto = 'Chocolate' and preco BETWEEN 10 aND 50)
when nome_produto = 'Celular' then
(SELECT Round(avg(preco),2) from produtos where nome_produto = 'Celular' and preco BETWEEN 80 aND 5000)
when nome_produto = 'Livro de Ficção' then
(SELECT Round(avg(preco),2) from produtos where nome_produto = 'Livro de Ficção' and preco BETWEEN 10 aND 200)
when nome_produto = 'Camisa' then
(SELECT Round(avg(preco),2) from produtos where nome_produto = 'Camisa' and preco BETWEEN 80 aND 200)
else preco
end;
COMMIT;