3
respostas

[Sugestão] Possível Resolução...

Calculei as médias de preços dos produtos dentro dos intervalos especificados e, em seguida, atualizei os preços fora desses intervalos com os valores médios obtidos, garantindo a consistência dos dados.

SELECT avg(preco) AS media_preco
FROM produtos
WHERE nome_produto = 'Bola de Futebol' AND preco BETWEEN 20 AND 100;

SELECT avg(preco) AS media_preco
FROM produtos
WHERE nome_produto = 'Chocolate' AND preco BETWEEN 10 AND 50;

SELECT avg(preco) AS media_preco
FROM produtos
WHERE nome_produto = 'Celular' AND preco BETWEEN 80 AND 5000;

SELECT avg(preco) AS media_preco
FROM produtos
WHERE nome_produto = 'Livro de Ficção' AND preco BETWEEN 10 AND 200;

SELECT avg(preco) AS media_preco
FROM produtos
WHERE nome_produto = 'Camisa' AND preco BETWEEN 80 AND 200;

BEGIN TRANSACTION;

UPDATE produtos
SET preco = CASE 
    WHEN nome_produto = 'Bola de Futebol' AND (preco < 20 OR preco > 100) THEN 64.7
    WHEN nome_produto = 'Chocolate' AND (preco < 10 OR preco > 50) THEN 32.02
    WHEN nome_produto = 'Celular' AND (preco < 80 OR preco > 50000) THEN 1032.07
    WHEN nome_produto = 'Livro de Ficção' AND (preco < 10 OR preco > 200) THEN 96.81
    WHEN nome_produto = 'Camisa' AND (preco < 80 OR preco > 200) THEN 138.46
    ELSE preco
END;

COMMIT;
3 respostas

Oii, Vinicius! Tudo beem?

Parabéns por colocar em prática o que vem aprendendo durante as aulas! E agradeço por compartilhar com a comunidade para que outras pessoas estudantes se inspirem na atividade.

Continue se dedicando aos estudos e conte com a Alura para se desenvolver cada vez mais.

Bons estudos, Vinicius!

Olá,

Utilizei este código para mudar os preços dos produtos, mas eles estão aparecendo como nulos na minha tabela. O que será que fiz de errado?

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oii, Mariana! Tudo bem?

No seu caso, os preços dos produtos estão retornando nulos na tabela e isso pode ser por diversos motivos. A mensagem de erro, indica que a transação não foi iniciada corretamente.

Como sugestão, para um primeiro momento, certifique-se de iniciar a transação com BEGIN TRANSACTION e confirmá-la com COMMIT. Verifique a lógica no seu comando UPDATE; se as condições no CASE não corresponderem aos dados, o preço permanecerá NULL. Além disso, garanta que a coluna preco aceita valores numéricos (do tipo INTEGER ou REAL). Por fim, verifique se há produtos na tabela que correspondem às condições especificadas, usando um SELECT simples para confirmar a existência desses dados.

Para podermos te ajudar de forma mais assertiva e personalizada, abra um novo tópico e adicione todas as informações necessárias, ou seja, contendo o código, o print da tela com erro, a aula que você está fazendo.

Espero que a sugestão seja um bom ponto de partida para resolver.

Bons estudos!