Boa tarde,

Estou com um problema com o Postgresql que penso que alguém versado em sql
poderá resolver com facilidade.


Numa base de dados dos Censos 2001, tenho várias tabelas, duas das quais
chamam-se <c2001_individuos> e c2001_subsecs (relacionadas pelo código da
sub-secção estatística)


Pretendo obter uma tabela com cada freguesia
(censos2001.c2001_subsecs.cc_dsg_eu02) do concelho de Tomar
(censos2001.c2001_subsecs.cc_dsg_eu02 = 'Tomar'), com a soma da população
residente em cada ( sum(censos2001.c2001_individuos.ttr) ).


Tentei várias coisas, mas sem sucesso.


---------------------

Tentativa 1:


select

censos2001.c2001_subsecs.ff_dsg_eu02,

sum(censos2001.c2001_individuos.ttr)


from

censos2001.c2001_subsecs,

censos2001.c2001_individuos

 where

censos2001.c2001_subsecs.subsec = censos2001.c2001_individuos.subsec

group by censos2001.c2001_subsecs.ff_dsg_eu02

having censos2001.c2001_subsecs.cc_dsg_eu02 = 'Tomar';


ERRO:

ERROR: column "c2001_subsecs.cc_dsg_eu02" must appear in the GROUP BY
clause or be used in an aggregate function

(compreendo mas não comsigo resolver)


---------------------

Tentativa 2:


select

censos2001.c2001_subsecs.ff_dsg_eu02,

sum(censos2001.c2001_individuos.ttr)


from

censos2001.c2001_subsecs,

censos2001.c2001_individuos


where

censos2001.c2001_subsecs.cc_dsg_eu02 = (select
censos2001.c2001_subsecs.cc_dsg_eu02 from censos2001.c2001_subsecs where
censos2001.c2001_subsecs.cc_dsg_eu02 = 'Tomar')


AND

 censos2001.c2001_subsecs.subsec = censos2001.c2001_individuos.subsec

group by censos2001.c2001_subsecs.ff_dsg_eu02;


ERRO:

ERROR: more than one row returned by a subquery used as an expression



--------------------------


Se eu pretendesse obter simplesmente o total da população de Tomar, sei que
seria fácil:


select

censos2001.c2001_subsecs.cc_dsg_eu02,

sum(censos2001.c2001_individuos.ttr)


from

censos2001.c2001_subsecs,

censos2001.c2001_individuos

 where

censos2001.c2001_subsecs.subsec = censos2001.c2001_individuos.subsec

group by censos2001.c2001_subsecs.cc_dsg_eu02

having censos2001.c2001_subsecs.cc_dsg_eu02 = 'Tomar';



Mas não é bem isto…

Sei que me está a falhar algo simples, mas o quê?

Isto da pouca prática com SQL tem destas coisas.


Obrigado.

Abraços,

António
_______________________________________________
Portugal mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/portugal

Responder a