Acho que me perdi um pouco quando omeçou a ficar mais complexo e misturar tudo rss
Onde o professor explica sobre o uso do AVG?
Acho que me perdi um pouco quando omeçou a ficar mais complexo e misturar tudo rss
Onde o professor explica sobre o uso do AVG?
Fiquei bem confusa com o exemplo, segue...
Usando Condições para Classificar 4:50
SELECT [NOME DO PRODUTO],
CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO'
WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END
FROM[TABELA DE PRODUTOS] order by [nome do produto]
(Ordenei para ver se existia mais de um produto com o mesmo nome)
Então o professor sugere o uso de um Group by para buscar a média, o que não entendi visto que se só existe um produto de cada a média seria do que?
SELECT [NOME DO PRODUTO],
CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO'
WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END,
AVG([PREÇO DE LISTA])
FROM
[TABELA DE PRODUTOS]
GROUP BY [NOME DO PRODUTO],
CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO'
WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END
Se fosse uma média das classificações todas apareceriam iguais, ou seja todo produto barato teria a mesma média o que não acontece...
Clean - 350 ml - Laranja PRODUTO BARATO 2,808
Clean - 470 ml - Laranja PRODUTO BARATO 3,768
Festival de Sabores - 700 ml - Maracujá PRODUTO BARATO 4,912
Frescor do Verão - 350 ml - Manga PRODUTO BARATO 3,8595
Frescor do Verão - 470 ml - Manga PRODUTO BARATO 5,1795
Light - 350 ml - Melância PRODUTO BARATO 4,555
Linha Citros - 700 ml - Lima/Limão PRODUTO BARATO 4,904
Linha Refrescante - 700 ml - Morango/Limão PRODUTO BARATO 6,3105
Pedaços de Frutas - 350 ml - Maça PRODUTO BARATO 4,211
Sabor da Montanha - 700 ml - Uva PRODUTO BARATO 6,309
Videira do Campo - 350 ml - Melância PRODUTO BARATO 4,56
Se for a média do produto também não tem logica já que so existe um produto de cada tipo na tabela de produto!
812829 Clean - 350 ml - Laranja Lata 350 ml Laranja 2,808
Clean - 470 ml - Laranja PRODUTO BARATO 3,768
Portanto o Group by não traz uma média e sim o preço do produto...
Queria entender o que o professor quis fazer, acho bem confuso quando não explica antes o que quer fazer...
e mesmo entendendo agora o que trouxe o resultado "média" não entendi o AVG
Olá, Amanda, tudo bem?
Peço desculpas pela demora no retorno.
O instrutor explica sobre as funções de agregação, na atividade 07 Agrupando os resultados
A função de agregação AVG, retorna a média aritmética de um conjunto de valores. A média é obtida somando todos os valores e dividindo o valor encontrado pelo número de dados desse conjunto.
No exemplo utilizado pelo instrutor durante a aula, realmente não faz sentido a utilização do AVG, já que o resultado final não é alterado. Porém, o foco principal da explicação é utilização da instrução CASE quando temos em uma consulta a cláusula group by.
Ao utilizarmos uma função de agregação, normalmente também precisamos informar a cláusula group by, que é utilizada para agrupar registros semelhantes de uma tabela em um ou mais campos. No SQL Server não é permitido realizar consultas onde os campos listados na seleção que não estão em uma função de agregação, não estão informadas na cláusula group by.
Como no exemplo utilizado pelo instrutor, na seleção temos o campo [NOME DO PRODUTO]
, a instrução CASE e o campoAVG([PREÇO DE LISTA])
que está dentro da função de agregação AVG, neste caso, precisamos informar na cláusula group by, todos os campos que não fazem parte da função de agregação, ou seja, o campo [NOME DO PRODUTO]
e a instrução CASE, precisam ser informados na cláusula group by, caso contrário, um erro será retornado:
SELECT [NOME DO PRODUTO],
CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO'
WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END,
AVG([PREÇO DE LISTA])
FROM
[TABELA DE PRODUTOS]
GROUP BY [NOME DO PRODUTO]
Uma forma de aplicar o AVG nesta consulta, é buscar a média de preço dos produtos por classificação, ou seja, será retornado a média aritmética de todos os produtos classificados como barato, de todos os produtos classificados como em conta e de produtos classificados como caro
SELECT
CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO'
WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END AS 'CLASSIFICAÇÃO',
AVG([PREÇO DE LISTA]) as 'Média'
FROM
[TABELA DE PRODUTOS]
GROUP BY CASE WHEN [PREÇO DE LISTA] >= 12 THEN 'PRODUTO CARO'
WHEN [PREÇO DE LISTA] >= 7 AND [PREÇO DE LISTA] < 12 THEN 'PRODUTO EM CONTA'
ELSE 'PRODUTO BARATO' END
Qualquer nova dúvida é só falar e bons estudos!