[Portugal] Dúvida com PostgreSQL

António M. Rodrigues amcrgrodrigues gmail.com
Terça-Feira, 18 de Setembro de 2012 - 09:19:06 PDT


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
-------------- próxima parte ----------
Um anexo em HTML foi limpo...
URL: <http://lists.osgeo.org/pipermail/portugal/attachments/20120918/18bf6863/attachment.html>


More information about the Portugal mailing list