[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