0
respostas

[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;