Funcoes SQL de Agrupamento

download Funcoes SQL de Agrupamento

of 4

Transcript of Funcoes SQL de Agrupamento

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 < 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;