O Departamento financeiro solicitou alguns relatórios com as seguintes informações:
– Total de compras por funcionários no mês;
– Valor total das compras por funcionário;
– Maior e menor compra;
– Total de vendas do mes e valor total das vendas de todos os funcionarios;
USE GUIADBA Go If Object_id('tb_Compra')is not null Drop Table tb_Compra Go Create Table tb_Compra ( id_Compra int identity, vl_Compra money, dt_Compra datetime ); Go Insert into tb_Compra (vl_Compra,dt_Compra) Values('3200.50','20150413'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('111.50','20150405'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('300','20150405'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('500.50','20150510'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('1000','20150523'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('380.45','20150523'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('150','20150515'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('745','20150519'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('210.60','20150528'); Insert into tb_Compra (vl_Compra,dt_Compra) Values('839.77','20150508'); Go --Select * From tb_Compra
If Object_id('tb_Funcionario_Compra')is not null Drop Table tb_Funcionario_Compra Go Create Table tb_Funcionario_Compra ( id_Funcionario_Compra int identity, id_Compra int, id_Funcionario int ); Go --Select * From tb_Funcionario Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (1,1); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (2,1); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (3,1); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (4,2); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (5,2); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (6,1); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (7,3); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (8,1); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (9,1); Insert into tb_Funcionario_Compra (id_Compra,id_Funcionario) values (10,2); --Select * From tb_Funcionario_Compra
Nesse relatório eu utilizei o operador ROLLUP para sumarizar o valor total e o total de vendas no mês.
O Rollup é usado em conjunto com a instrução GROUP BY. Uma query simples e que retorna o resultado solicitado.
Select Funcionario = isnull(c.nm_Funcionario,'TOTAL DE COMPRAS'), Valor_Total_Mes = sum(vl_Compra), Total_Compras_Mes = count(*), Maior_Compra_Mes = max(vl_Compra), Menor_Compra_Mes = min(vl_Compra) From tb_Compra a Inner Join tb_Funcionario_Compra b On a.id_Compra = b.id_Compra Inner Join tb_funcionario c On c.id_Funcionario = b.id_Funcionario Where year(dt_Compra) = '2015' And month(dt_Compra) = '05' group by c.nm_Funcionario with rollup Go