Você está na página 1de 4

Funcao SQL de agrupamento.

A linguagem SQL disponibliza 5 funes de agrupamento de dados, entre elas: COUNT(contar) SUM(somar) MAX(maximo) MIN(minimo) AVG(average/media). A seguir, iremos ver alguns exemplos de uso destas funes. 1. Apresentar a quantidade de produtos cadastrados: select count(*) from tb_produto; OBS: dentro do parantses voc seleciona o que voc deseja contar, neste caso o * representa a chave primria da tabela de produto. 2. Apresentar a somatria dos preos de todos os produtos: select sum(preco) from tb_produto; OBS: dentro do parentses voc seleciona o que voc deseja somar, neste caso o preco que um campo numrico que deve ser somado. Sempre quando voc for querer somar algo, este campo necessriamente precisa ser um campo numrico como no exemplo acima. 3. Apresentar o preo do produto mais caro: select max(preco) from tb_produto; OBS: dentro do paranteses voc seleciona o que voc deseja ser mostrado, a funo MAX retorna o maior valor. 4. Apresentar o preco do produto mais barato: select min(preco) from tb_produto; OBS: a mesma coisa da funo max, mas neste caso o MIN pega o menor valor. 5. Apresentar a mdia de preos dos produtos: select avg(preco) from tb_produto; OBS: a funo AVG ou average, apresenta a mdia de um campo numrico, como no exemplo acima, ele faz a mdia do preo da tabela de produto. 6. Usar todas as funes acima numa mesma consulta: select count(*),sum(preco),max(preco),min(preco),avg(preco) from tb_produto; OBS: todas a funes podem ser executadas em uma nica consulta. 7. Apresentar a quantidade de produtos que custem at 100 reais. select count(*) from tb_produto where preco <= 100; OBS: sempre que voc necessita de apenas um resultado, use o WHERE para fazer a filtragem. 8. Apresentar a descrio e o preo do produto mais caro. select descricao, preco from tb_produto where preco = (select max(preco) from tb_produto) ; 9. Apresentar a diferena (em reais e percentual) entre os preco do produto mais ca ro

e o mais barato. select min(preco) menor, max(preco) maior, max(preco)-min(preco) diferenca_reais, max(preco)/min(preco) * 100 diferenca_percentual from tb_produto; 10. Apresentar a quantidade de produtos abaixo da mdia de preos. select count(*) from tb_produto where preco < (select avg(preco) from tb_produto ); 11. Apresentar a descrio e o preco dos produtos abaixo da mdia. select descricao, preco from tb_produto where preco < (select avg(preco) from tb _produto); OBS2: To caindo de sono.. mais ta funcionando tudo. 12. Apresentar a quantidade de produtos entre 50 e 80 reais : select count(*) from tb_produto where preco between 50 and 80; OBS3: zzzZZZZzZZzzz

Clusula GROUP BY A clusula GROUP BY usada em conjunto com as funes de agregao quando se desejar agrupar o resultado da consulta por um campo. Por exemplo, para apresentar a quantidade de produtos cadastrados agrupados por categoria. 13. Apresentar a quantidade de produtos agrupados por categoria. SELECT b.descricao, count(*) qtde FROM tb_produto a INNER JOIN tb_produto_categoria b ON a.cod_cat = b.cod_cat GROUP BY b.descricao; O GROUP BY neste exemplo pega cada categoria e faz um COUNT(ou seja ele conta a qtde de produtos) e agrupa em uma nica categoria. EX: Informatica qtde = 100, Eletrodomsticos qtde = 67; 14. Apresentar o maior e o menor preco de produtos agrupados pela categoria. SELECT b.descricao, max(preco), min(preco) FROM tb_produto a INNER JOIN tb_produ to_categoria b ON a.cod_cat = b.cod_cat GROUP BY b.descricao; 15. Apresentar a somatria dos preos dos produtos agrupados por categoria. SELECT b.descricao, SUM(preco) FROM tb_produto a INNER JOIN tb_produto_categoria b

ON a.cod_cat = b.cod_cat GROUP BY b.descricao; ___ ___ \\\\_//// =( 0 . 0 )= > < o( )___( ) eu sei fazer coelho ! 16. Apresentar a quantidade de funcionrios cadastrados. select count(*) qtde from tb_funcionario; 17. Apresentar o valor do maior salario entre os funcionrios. select max(salario) from tb_funcionario; 18. Apresentar o nome e o menor salrio entre os funcionrios. select nome, salario from tb_funcionario where salario = (select min(salario) from tb_funcionario); 19. Apresentar a mdia de salrios entre os funcionrios que ocupem o cargo de gerente. select avg(salario) from tb_funcionario where cargo ='gerente'; 20. Apresentar a quantidade de funcionrios agrupados por cargo. select cargo, count(*) qtde from tb_funcionario GROUP BY cargo; 21. Apresentar a quantidade de funcionrios agrupados por departamento. select b.nome, count(*) qtde from tb_funcionario a inner join tb_departamento b ON a.cod_depto = b.depto GROUP BY b.nome; 22. Apresentar o valor total com folha de pagamento da empresa. select SUM(salario) from tb_funcionario; 23. Apresentar o valor de folha de pagamento agrupado por departamento. select b.nome, SUM(salario) from tb_funcionario a inner join tb_departamento b ON a.cod_depto = b.cod_depto GROUP BY b.nome; 24. Apresentar o maior e o menor salrio de cada departamento. select b.nome, max(salario), min(salario) from tb_funcionario a inner join tb_departamento b ON a.cod_depto = b.cod_depto GROUP BY b.nome; 25. Apresentar a mdia salarial de cada departamento.

select b.nome, avg(salario) from tb_funcionario a inner join tb_departamento b ON a.cod_depto = b.cod_depto GROUP BY b.nome; 26. Apresentar a quantidade de funcionario por departamento, mas somente de depa rtamentos com mais de 5 funcionarios. select b.nome, count(*) from tb_funcionario a inner join tb_departamento b ON a. cod_depto = b.cod_depto GROUP BY b.nome HAVING COUNT(*) > 5; obs: a clusula HAVING funciona parecido com o WHERE, mas executada depois da clusula GROUP BY. 27. Apresentar o nome de cada departamento com o respectivo valor gasto com folh a de pagamento somente dos departamentos que gastem mais de 10 mil reais. select b.nome, SUM(salario) from tb_funcionario a inner join tb_departamento b ON a.cod_depto = b.cod_depto GROUP BY b.nome having sum(salario) > 10000;

Você também pode gostar