Fórum Dúvidas com consultas no postgreSQL #27104
26/08/2009
0
FUNCIONARIO ([u:e143523a4d]matricula[/u:e143523a4d](pk), nome_func, anos_servico, salario, cod_orgao(fk))
ORGAO ([u:e143523a4d]cod_orgao[/u:e143523a4d](pk), nome_orgao)
DEPARTAMENTO (cod_depto(pk), localizacao)
DIVISAO ([u:e143523a4d]cod_div[/u:e143523a4d](pk))
SUBORDINADO ([u:e143523a4d]cod_depto, cod_div[/u:e143523a4d](pk composta))
GERENCIA ([u:e143523a4d]mat_ger, cod_orgao[/u:e143523a4d](pk composta))
FUNC_COMUM ([u:e143523a4d]mat_func[/u:e143523a4d](pk), cargo)
PROJETO ([u:e143523a4d]cod_proj[/u:e143523a4d](PK), nome_proj, inicio, fim)
ALOCA ([u:e143523a4d]cod_proj, mat_func[/u:e143523a4d](pk composta), data_alocacao)
COORDENA ([u:e143523a4d]cod_projeto, mat_coord[/u:e143523a4d](pk composta), data_alocacao)
SUPERVISIONA ([u:e143523a4d]mat_superior, mat_func[/u:e143523a4d](pk composta))
PROJ_TECNICO ([u:e143523a4d]cod_proj[/u:e143523a4d](pk), area_pesquisa)
E eu preciso fazer as seguintes consultas:
Descubra qual a média de ganhos totais e quantos empregados são considerados para cálculo dessa média.
Liste o menor, o maior e a média de salários de cada departamento que possua
salário médio superior a R$ 1.000,00.
Liste o salário médio dos empregados por departamento e local para grupos de mais
de um empregado.
Liste a matrícula, o nome e o salário dos funcionários que ganham salário superior os do seu respectivo gerente.
Liste a matrícula e o nome do gerente do funcionário de cargo (aux. administrativo) que ganha o maior salário.
Liste a matrícula e o nome do funcionário de cargo (Auxiliar Administrativo) que ganha o maior salário. Liste também o nome do seu gerente.
Se puderem ajudar com pelo menos uma dessas ficarei muito grato.
Abraços.[/u]
Renancrc
Curtir tópico
+ 0Posts
26/08/2009
Emerson Nascimento
todos os campos e tabelas necessárias estão listadas ?
como, a partir de um funcionário, você encontra o cargo, e em qual tabela está informado esse cargo ?
Gostei + 0
26/08/2009
Renancrc
[img:c07bec0fe3]http://img200.imageshack.us/img200/7314/classdiagram0.jpg[/img:c07bec0fe3]
todos os campos e tabelas necessárias estão listadas ?
[b:c07bec0fe3]Sim todos campos e tabelas necessárias estçao listadas.
como, a partir de um funcionário, você encontra o cargo, e em qual tabela está informado esse cargo ?
Esse cargo está informado na tabela Funcionário Comum vendo o diagrama acho que fica mais fácil obrigado a ajuda.
:)
[/b:c07bec0fe3]
Gostei + 0
27/08/2009
Emerson Nascimento
[img:a5213f7de9]http://img190.imageshack.us/img190/5029/relationb.jpg[/img:a5213f7de9]
Gostei + 0
27/08/2009
Renancrc
Obrigado mais uma vez mas se mesmo assim não conseguiu entender você poderia me ajudar nas outras que estão mais claras?
Obrigado
Gostei + 0
27/08/2009
Emerson Nascimento
[b:d6ad9c530b]Descubra qual a média de ganhos totais e quantos empregados são considerados para cálculo dessa média.[/b:d6ad9c530b]
SELECT Avg(SALARIO) AS MEDIA, Count(*) AS NUM_FUNCIONARIOS FROM FUNCIONARIO
[b:d6ad9c530b]Liste o menor, o maior e a média de salários de cada departamento que possua
salário médio superior a R$ 1.000,00.[/b:d6ad9c530b]
SELECT Min(SALARIO) AS MENOR_SALARIO, Max(SALARIO) AS MAIOR_SALARIO, AVG(SALARIO) AS MEDIA, DEPTO FROM FUNCIONARIO LEFT JOIN [ENCONTRE O DEPARTAMENTO DO FUNCIONARIO] GROUP BY DEPTO HAVING AVG(SALARIO) > 1000
[b:d6ad9c530b]Liste o salário médio dos empregados por departamento e local para grupos de mais de um empregado.[/b:d6ad9c530b]
SELECT AVG(SALARIO) AS MEDIA, DEPTO, LOCAL, COUNT(*) AS NUM_FUNCIONARIOS FROM FUNCIONARIO LEFT JOIN [ENCONTRE O DEPARTAMENTO DO FUNCIONARIO] GROUP BY DEPTO, LOCAL HAVING COUNT(*) > 1
[b:d6ad9c530b]Liste a matrícula, o nome e o salário dos funcionários que ganham salário superior os do seu respectivo gerente.[/b:d6ad9c530b]
SELECT FUNCIONARIO.matricula, FUNCIONARIO.nome_func, FUNCIONARIO.salario FROM FUNCIONARIO INNER JOIN GERENCIA ON (Gerencia.cod_orgao = Funcionario.cod_orgao) INNER JOIN Funcionario AS Gerente ON (Gerente.matricula = Gerencia.mat_ger) WHERE FUNCIONARIO.Salario > Gerente.Salario
[b:d6ad9c530b]Liste a matrícula e o nome do gerente do funcionário de cargo (aux. administrativo) que ganha o maior salário.[/b:d6ad9c530b]
SELECT Gerente.matricula, Gerente.nome_func AS nome_gerente FROM FUNCIONARIO INNER JOIN FUNC_COMUM ON (Func_comum.mat_func = Funcionario.matricula) INNER JOIN GERENCIA ON (Gerencia.cod_orgao = Funcionario.cod_orgao) INNER JOIN Funcionario AS Gerente ON (Gerente.matricula = Gerencia.mat_ger and Gerente.Matricula <> Funcionario.matricula) WHERE Func_comum.Cargo = ´Auxiliar Administrativo´ and Funcionario.Salario = (SELECT max(Fn2.Salario) FROM FUNCIONARIO AS Fn2 WHERE Fn2.Cargo = ´Auxiliar Administrativo´)
[b:d6ad9c530b]Liste a matrícula e o nome do funcionário de cargo (Auxiliar Administrativo) que ganha o maior salário. Liste também o nome do seu gerente.[/b:d6ad9c530b]
SELECT Funcionario.matricula, Funcionario.nome_func, Gerente.nome_func AS nome_gerente FROM FUNCIONARIO INNER JOIN FUNC_COMUM ON (Func_comum.mat_func = Funcionario.matricula) INNER JOIN GERENCIA ON (Gerencia.cod_orgao = Funcionario.cod_orgao) INNER JOIN Funcionario AS Gerente ON (Gerente.matricula = Gerencia.mat_ger and Gerente.Matricula <> Funcionario.matricula) WHERE Func_comum.Cargo = ´Auxiliar Administrativo´ and Funcionario.Salario = (SELECT max(Fn2.Salario) FROM FUNCIONARIO AS Fn2 WHERE Fn2.Cargo = ´Auxiliar Administrativo´)
essas são instruções para você dar partida no seu estudo. pode ser que não funcionem com PostGre (não trabalho com esse SGBDR), mas dá pra você ter uma idéia de como fazer.
Gostei + 0
27/08/2009
Renancrc
Agora acho que já entendi e qualquer coisa que precisar estamos aí.
Abraços!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)