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
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a