1
resposta

[Projeto] Resultado do Desafio - Aula01 Atividade10

  1. Primeiro extrai a media de preço do produtos dentro do limite criando uma view. --Criar view da media de preço dos produtos dentros dos limite--

CREATE VIEW VW_Media_Preco_Produtos AS

SELECT id_produto, nome_produto, ROUND(AVG(preco),2) AS MEDIA_PRECO from produtos

WHERE nome_produto LIKE 'Bola de Futebol' and preco BETWEEN '20.00' and '100.00'

GROUP BY nome_produto

UNION all

SELECT id_produto, nome_produto, ROUND(AVG(preco),2) AS MEDIA_PRECO from produtos

WHERE nome_produto LIKE 'Chocolate' and preco BETWEEN '10.00' and '50.00'

GROUP BY nome_produto

UNION ALL

SELECT id_produto, nome_produto, ROUND(AVG(preco),2) AS MEDIA_PRECO from produtos

WHERE nome_produto LIKE 'Celular' and preco BETWEEN '80.00' and '5000.00'

GROUP BY nome_produto

UNION ALL

SELECT id_produto, nome_produto, ROUND(AVG(preco),2) AS MEDIA_PRECO from produtos

WHERE nome_produto LIKE 'Livro de Ficção' and preco BETWEEN '10.00' and '200.00'

GROUP BY nome_produto

UNION ALL

SELECT id_produto, nome_produto, ROUND(AVG(preco),2) AS MEDIA_PRECO from produtos

WHERE nome_produto LIKE 'Camisa' and preco BETWEEN '80.00' and '200.00'

GROUP BY nome_produto

ORDER by nome_produto;

  1. Depois listei os prodoutos fora do limite de preço criando uma view. --Criar VIEW dos produtos fora do limite--

CREATE VIEW VW_Produtos_Fora_Limite AS

SELECT id_produto, nome_produto, preco from produtos

WHERE nome_produto = 'Bola de Futebol' and preco > '100.00'

UNION all

SELECT id_produto, nome_produto, preco from produtos

WHERE nome_produto = 'Chocolate' and preco > '50.00'

UNION ALL

SELECT id_produto, nome_produto, preco from produtos

WHERE nome_produto = 'Celular' and preco > '5000.00'

UNION ALL

SELECT id_produto, nome_produto, preco from produtos

WHERE nome_produto = 'Livro de Ficção' and preco > '200.00'

UNION ALL

SELECT id_produto, nome_produto, preco from produtos

WHERE nome_produto = 'Camisa' and preco > '200.00'

ORDER by nome_produto;

  1. Por ultimo criei a transaction com base nas duas views criadas anteriormente. --Atualizar preços dos produtos fora do limite--

BEGIN TRANSACTION;

UPDATE produtos SET preco = (SELECT B.MEDIA_PRECO FROM VW_Media_Preco_Produtos B

WHERE produtos.nome_produto = B.nome_produto)

WHERE produtos.id_produto IN (SELECT id_produto FROM VW_Produtos_Fora_Limite);

--Reverte o resultado da transaction--

ROLLBACK;

--Confirma definitivamente o resultado da transaction--

COMMIT;

1 resposta

Oi, DKInformatica Soluçoes! Como vai?

Obrigada por compartilhar seu código com a comunidade Alura.

Gostei de como você estruturou as views para separar os produtos dentro e fora do limite de preço. A lógica está clara e organizada, especialmente o uso do UNION ALL para combinar as diferentes condições.

Ícone de sugestão

Para saber mais:

A título de curiosidade, ao trabalhar com ajustes de valores em bases de dados SQL, como no caso da Black Friday, você pode usar funções como UPDATE para alterar valores e aplicar alterações nas tabelas de forma eficiente. Confira alguns links úteis para se aprofundar no tema e aprender mais sobre como manipular dados em bases SQLite:

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!