Resolvido. No dia 18 de Setembro de 2012 17:19, António M. Rodrigues < [email protected]> escreveu:
> 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
