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

Responder a