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