1
resposta

Desafio analise e atualização de dados

Para trazer a consulta e analisar os valores, usei o seguinte comando:

SELECT id_produto, nome_produto, preco
FROM produtos
WHERE
(nome_produto = 'Bola de Futebol' AND (preco < 20 OR preco > 100))
    OR (nome_produto = 'Chocolate' AND (preco < 10 OR preco > 50))
    OR (nome_produto = 'Celular' AND (preco < 80 OR preco > 5000))
    OR (nome_produto = 'Livro de Ficção' AND (preco < 10 OR preco > 200))
    OR (nome_produto = 'Camisa' AND (preco < 80 OR preco > 200));

Para fazer a atualização, fiz da seguinte forma:

BEGIN TRANSACTION;
UPDATE produtos
SET Preco = CASE 
    WHEN nome_produto = 'Bola de Futebol' AND Preco < 20 THEN 20
    WHEN nome_produto = 'Bola de Futebol' AND Preco > 100 THEN 100
    WHEN nome_produto = 'Chocolate' AND Preco < 10 THEN 10
    WHEN nome_produto = 'Chocolate' AND Preco > 50 THEN 50
    WHEN nome_produto = 'Celular' AND Preco < 80 THEN 80
    WHEN nome_produto = 'Celular' AND Preco > 5000 THEN 5000
    WHEN nome_produto = 'Livro de Ficção' AND Preco < 10 THEN 10
    WHEN nome_produto = 'Livro de Ficção' AND Preco > 200 THEN 200
    WHEN nome_produto = 'Camisa' AND Preco < 80 THEN 80
    WHEN nome_produto = 'Camisa' AND Preco > 200 THEN 200
    ELSE Preco
END
WHERE 
    (nome_produto = 'Bola de Futebol' AND (Preco < 20 OR Preco > 100))
    OR (nome_produto = 'Chocolate' AND (Preco < 10 OR Preco > 50))
    OR (nome_produto = 'Celular' AND (Preco < 80 OR Preco > 5000))
    OR (nome_produto = 'Livro de Ficção' AND (Preco < 10 OR Preco > 200))
    OR (nome_produto = 'Camisa' AND (Preco < 80 OR Preco > 200));
COMMIT;

Não me retornaram nenhum erro, estão corretas?

1 resposta

Oii, Leandro! Tudo bem?

É isso mesmo, você está no caminho certo! A organização da consulta e a lógica de atualização dos preços com o uso de CASE está muito boa, deixa o código mais legível e fácil de entender. Se me permite uma dica, seria otimizar seu código usando condições mais dinâmicas para futuros ajustes.

Continue se dedicando aos estudos e caso tenha dúvidas, não deixe de compartilhar conosco.

Até mais, Leandro!