Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Possíveis soluções para os preços

SQL SERVER e SSMS


select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.1
WHERE nome_produto = 'Chocolate' and preco > 1000

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.1
WHERE nome_produto = 'Chocolate' and preco > 100

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.1
WHERE nome_produto = 'Bola de Futebol' and preco > 1000

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.1
WHERE nome_produto = 'Bola de Futebol' and preco > 100

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.1
WHERE nome_produto = 'Livro de Ficcao' and preco > 1000

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.5
WHERE nome_produto = 'Livro de Ficcao' and preco > 100

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.1
WHERE nome_produto = 'Camisa' and preco > 1000

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = preco * 0.3
WHERE nome_produto = 'Camisa' and preco > 100

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT

BEGIN  TRANSACTION

UPDATE produtos_loop
SET preco = RAND() * (2000.00 - 1000.00) + 1000.00
WHERE nome_produto = 'Celular' and preco NOT BETWEEN 1000.00 AND 2000.00

select nome_produto, AVG(preco), MIN(preco), MAX(preco) from produtos_loop
group by nome_produto

COMMIT
nome_produtoValor_MedioValorMinimoValorMaximo
Chocolate35.07117610.0199.90
Bola de Futebol35.26434110.00100.00
Livro de Ficcao162.35063910.59499.90
Camisa101.80206510.34299.94
Celular1324.8203741001.002000.00
1 resposta
solução!

Oi, Robson! Como vai?

Agradeço por compartilhar seu codigo com a comunidade Alura.

Voce aplicou bem o BEGIN TRANSACTION e COMMIT para cada grupo de atualizacoes.

Uma dica interessante para o futuro é utilizar o CASE WHEN em um único UPDATE. Veja este exemplo:


UPDATE produtos_loop
SET preco =
  CASE
    WHEN nome_produto = 'Chocolate' AND preco > 1000 THEN preco * 0.1
    WHEN nome_produto = 'Chocolate' AND preco > 100 THEN preco * 0.1
    ELSE preco
  END;

Esse código aplica regras diferentes de atualização em uma única instrução, facilitando ajustes futuros.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abracos e bons estudos!