Neste artigo veremos como é simples utilizarmos as funções de agregação SUM, AVG, MIN, MAX e COUNT, não conhece-las pode fazer muita falta no dia a dia de um DBA, para emissão de relatórios principalmente.
Funções:
SUM – Retorna a soma dos valores, deve-se utilizar SUM(nome_da_coluna)
AVG – Retorna a media de valores, deve-se utilizar AVG(nome_da_coluna)
MIN – Retorna o menor valor, deve-se utilizar MIN(nome_da_coluna)
MAX – Retorna o maior valor, deve-se utilizar MAX(nome_da_coluna)
COUNT – Retorna a quantidade de registros COUNT(nome_da_coluna)
É importante comentar que todas as colunas de um SELECT que não estão sendo utilizadas na função de agregação devem sempre estar no GROUP BY. Vamos ver alguns exemplos para simplificar tudo que foi dito.
-- Criando Estrutura Use GuiaDBA Go Create Table Produto (Id_Produto int Primary Key Identity(1,1), nome_produto varchar(50), valor_produto money) Go Insert Into Produto (nome_produto, valor_produto) values ('Bone',100), ('Camisa Manga Longa',80),('Camisa Manga Curta',60),('Tenis',200) Go Create Table Venda (Id_Venda int Primary key Identity(1,1), Id_Produto Int, Valor_Unidade money, QTD int, Valor_Total as (Valor_Unidade * QTD)) Go Alter Table Venda add foreign key (Id_Produto) references Produto (Id_Produto) Go Insert Into Venda (Id_Produto,Valor_Unidade, QTD) Values (1,100,2), (4,200,1),(3,60,4),(2,80,2),(1,100,5),(4,200,1) Go
Select distinct nome_produto, Valor_Unidade, SUM(QTD), SUM(Valor_Total) -- Total de quantidade de produto vendido e valor total de venda From Venda ven Inner Join Produto pro On ven.Id_Produto = pro.Id_Produto Group By nome_produto, Valor_Unidade
Select distinct nome_produto, Valor_Unidade, AVG(QTD), AVG(Valor_Total) -- Media de quantidade de produto vendido e media de venda From Venda ven Inner Join Produto pro On ven.Id_Produto = pro.Id_Produto Group By nome_produto, Valor_Unidade
Select distinct nome_produto,MIN(Valor_Total) -- Venda de menor valor de cada produto From Venda ven Inner Join Produto pro On ven.Id_Produto = pro.Id_Produto Group By nome_produto
Select distinct nome_produto,MAX(Valor_Total) -- Venda de maior valor de cada produto From Venda ven Inner Join Produto pro On ven.Id_Produto = pro.Id_Produto Group By nome_produto
Select distinct nome_produto,count(nome_produto),SUM(QTD),SUM(Valor_Total) -- Venda de maior valor de cada produto From Venda ven Inner Join Produto pro On ven.Id_Produto = pro.Id_Produto Group By nome_produto