2009/6/16 Leonardo Cezar <[email protected]>: > 2009/6/15 Leandro Barbosa Silva <[email protected]>: > > <corte> >> São apenas 4 questões, que para quem está habituado com o PostgreSQL, >> creio que não será tão difícil quanto é para mim. > > É engraçado. Eu julgo que num curso *técnico* o aluno deveria aprender > a fazer as coisas certas desde a modelagem dos dados, porém a forma > como os exercícios foram propostos foram no mínimo questionáveis, a > começar pela organização dos dados nas tabelas. > >> Responda as seguintes questões: >> >> 1) Crie uma função que receba como parâmetro o numero de um >> departamento e retorne o total de horas trabalhadas pelo gerente. > > SELECT SUM(a.horas_trabalhadas) > FROM atividdes a > JOIN projeto p ON (a.id_projeto = p.id) > JOIN dptos d ON (p.id_dpto = d.id) > WHERE d.id = $1 > GROUP BY a.horas_trabalhas; > >> 2) Crie uma função que some as horas trabalhadas de cada projeto >> e apresente a duração das mesmas em dias. > > SELECT TO_CHAR(interval SUM(horas_trabalhadas)/24,'HH24') > FROM atividades a JOIN projetos p ON (a.id_projeto = p.id) > GROUP BY a.id_projeto, horas_trabalhdas; > > <corte> > > Apenas exemplifiquei essas duas consultas pra voce entender que não é > necessário utilizar funções para extrair tal conteúdo dessas tabelas e > sinceramente, a não ser que voce precise agrupar blocos lógicos com > regras de negócios e/ou utilizar restrições de segurança de acesso aos > dados que simples DCLs não resolvam, voce provavelmente não vai querer > utilziar funções pra isso. > > Como dica, voce poderia utilizar funções utilizando a linguagem SQL > que não precisam carregar o processador de linguagens procedurais > (plpgsql). e.g.: > > CREATE FUNCTION foobar(ID INTEGER) > LANGUAGE 'sql' > RETURN INTEGER AS > $foobar$ > > SELECT 1 FROM DUAL; -- aqui vai seu SELECT criadoacima > > $foobar$; > > Abraço! > > -Leo > -- > Leonardo Cezar > http://www.aslid.org.br > http://postgreslogia.wordpress.com > http://www.dextra.com.br/postgres > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >
Caro Leo, muito obrigado pelas informações. Tenha certeza de que estão sendo de grande utilidade. Como você deve imaginar, o nóvel do curso não anda lá essas coisas.... Eu estava enroscado demais com o JOIN, não estava conseguindo montar. Agora estou no trabalho, mas indo almoçar em casa já ponho em pratica. Pelo que estou vendo não terei a mesma dificuldade de antes. Mais uma vez, obrigado. -- Leandro Barbosa da Silva _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
