[Portugal] Dúvida com PostgreSQL

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


Resolvido.

No dia 18 de Setembro de 2012 17:19, António M. Rodrigues <
amcrgrodrigues  gmail.com> 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
>
-------------- próxima parte ----------
Um anexo em HTML foi limpo...
URL: <http://lists.osgeo.org/pipermail/portugal/attachments/20120918/4d4df3ac/attachment.html>


More information about the Portugal mailing list