SELECT instituicao.cod, (SELECT sum(recurso.total)
FROM pesquisador
LEFT JOIN projeto ON projeto.coordenador = pesquisador.cod
LEFT JOIN recurso ON recurso.cod_proj = projeto.cod
WHERE pesquisador.cod = 15 and recurso.tipo = 'p' ) as permanente,
(SELECT sum(recurso.total)
FROM pesquisador
LEFT JOIN projeto ON projeto.coordenador = pesquisador.cod
LEFT JOIN recurso ON recurso.cod_proj = projeto.cod
WHERE pesquisador.cod = 15 and recurso.tipo = 'c' ) as consumo,
(SELECT sum(recurso.total)
FROM pesquisador
LEFT JOIN projeto ON projeto.coordenador = pesquisador.cod
LEFT JOIN recurso ON recurso.cod_proj = projeto.cod
WHERE pesquisador.cod = 15 and recurso.tipo = 's' ) as servico
GROUP BY instituicao.cod
ORDER BY instituicao.cod;
Isso lhe dá alguma idéia?
_____
De: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] Em nome de Flávio Alves
Granato
Enviada em: quinta-feira, 10 de maio de 2007 09:16
Para: Comunidade PostgreSQL Brasileira
Assunto: [pgbr-geral] dúvida com sql
alguém poderia me ajudar com uma luz no caminho para eu desenvolver um sql?
É o seguinte.
tenho uma tabela com
| cod | tipo | cod_instituicao | cod_proj | total |
p
c
s
e eu gostaria que retornasse
| cod_instituicao | soma do total de p | soma do total de c | soma do total
de s |
se alguem puder me dar uma luz para o caminho que tenho que seguir para
achar a solução. Tentei fazer desta forma mas esta gerando um plano
cartesiano se eu tirar o distinct. Agradeço muito desde já.
select distinct on (instituicao.nome) instituicao.cod, instituicao.nome,
permanente, consumo, servico
from (select sum(recurso.total) as permanente
from pesquisador, projeto, recurso
where pesquisador.cod = 15 and
pesquisador.cod = projeto.coordenador and
projeto.cod = recurso.cod_proj and
recurso.tipo = 'p'
group by recurso.cod_instituicao,recurso.tipo ) per,
( select sum( recurso.total) as consumo, instituicao.cod,
recurso.cod_proj
from pesquisador, projeto, recurso, instituicao
where pesquisador.cod = 15 and
pesquisador.cod = projeto.coordenador and
projeto.cod = recurso.cod_proj and
recurso.cod_instituicao = instituicao.cod and
recurso.tipo = 'c'
group by instituicao.cod, recurso.cod_proj,recurso.total ) con,
( select sum(recurso.total) as servico, instituicao.cod,
recurso.cod_proj
from pesquisador, projeto, recurso, instituicao
where pesquisador.cod = 15 and
pesquisador.cod = projeto.coordenador and
projeto.cod = recurso.cod_proj and
recurso.cod_instituicao = instituicao.cod and
recurso.tipo = 's'
group by instituicao.cod, recurso.cod_proj,recurso.total ) ser,
instituicao, projeto, pesquisador, recurso
where pesquisador.cod = 15 and
pesquisador.cod = projeto.coordenador and
recurso.cod_proj = projeto.cod and
recurso.cod_instituicao = instituicao.cod
group by instituicao.cod, per.permanente, con.consumo, ser.servico,
instituicao.nome, recurso.total
--
Lista CGNU-VA:
http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/cgnu-va
<http://listas.cipsga.org.br/cgi-bin/mailman/listinfo/cgnu-va>
Consultoria em Software Livre:
(31) 9145 7109
Desenvolvimento de sistemas web, desktop, montagem de servidores e redes.
http://microbiocity.blogspot.com <http://microbiocity.blogspot.com>
melhor blog que existe.
"Computers are like air conditioners: they do not work well when you
open windows..." DigitalDrill
Nunca tenha medo de tentar algo novo. Lembre-se de que um amador solitário
construiu a Arca e um grande grupo de profissionais construiu o Titanic.
"O próximo grande salto evolutivo da humanidade será a descoberta de que
cooperar é melhor que competir"
Prof. Pietro Ubaldi
Se usuário tivesse extensão, com certeza seria .fdp
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral