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