I am doing a query to get percentage by zone but it is not working me very well
select nuts3_res_1amc.id as id ,nuts3_res_1amc.localidade as source, nuts3_trab.localidade as target ,nuts3_trab.id as id2,
((COUNT(*) * 100)/
(select count(*) FROM dados
INNER JOIN nuts3_res_1amc ON (dados.nuts3_resid_1amc = nuts3_res_1amc.id)
INNER JOIN nuts3_trab ON (dados.nuts3_trab = nuts3_trab.id)
INNER JOIN sexo ON (dados.sexo = sexo.id)
INNER JOIN meiovida on (dados.meiovida=meiovida.id)
where dados.censo='2001' and sexo.sexo='Feminino' and nuts3_res_1amc.localidade!= nuts3_trab.localidade and nuts3_res_1amc.localidade!='Ainda não tinha nascido' and nuts3_trab.localidade!='Não se aplica'
group by nuts3_res_1amc.id,nuts3_res_1amc.localidade))as t
FROM dados
INNER JOIN nuts3_res_1amc ON (dados.nuts3_resid_1amc = nuts3_res_1amc.id)
INNER JOIN nuts3_trab ON (dados.nuts3_trab = nuts3_trab.id)
INNER JOIN sexo ON (dados.sexo = sexo.id)
INNER JOIN meiovida on (dados.meiovida=meiovida.id)
where dados.censo='2001' and sexo.sexo='Feminino' and nuts3_res_1amc.localidade!= nuts3_trab.localidade and nuts3_res_1amc.localidade!='Ainda não tinha nascido' and nuts3_trab.localidade!='Não se aplica'
group by nuts3_res_1amc.id, nuts3_res_1amc.localidade,nuts3_trab.localidade ,nuts3_trab.id
order by id ,id2
If you put it this way just for mine it works fine
select nuts3_res_1amc.id as id ,nuts3_res_1amc.localidade as source, nuts3_trab.localidade as target ,nuts3_trab.id as id2,
((COUNT(*) * 100)/
(select count(*) FROM dados
INNER JOIN nuts3_res_1amc ON (dados.nuts3_resid_1amc = nuts3_res_1amc.id)
INNER JOIN nuts3_trab ON (dados.nuts3_trab = nuts3_trab.id)
INNER JOIN sexo ON (dados.sexo = sexo.id)
INNER JOIN meiovida on (dados.meiovida=meiovida.id)
where dados.censo='2001' and sexo.sexo='Feminino' and nuts3_res_1amc.localidade!= nuts3_trab.localidade and nuts3_res_1amc.localidade='Minho-Lima' and nuts3_res_1amc.localidade!='Ainda não tinha nascido' and nuts3_trab.localidade!='Não se aplica'
group by nuts3_res_1amc.id,nuts3_res_1amc.localidade))as t
FROM dados
INNER JOIN nuts3_res_1amc ON (dados.nuts3_resid_1amc = nuts3_res_1amc.id)
INNER JOIN nuts3_trab ON (dados.nuts3_trab = nuts3_trab.id)
INNER JOIN sexo ON (dados.sexo = sexo.id)
INNER JOIN meiovida on (dados.meiovida=meiovida.id)
where dados.censo='2001' and sexo.sexo='Feminino' and nuts3_res_1amc.localidade='Minho-Lima' and nuts3_res_1amc.localidade!= nuts3_trab.localidade and nuts3_res_1amc.localidade!='Ainda não tinha nascido' and nuts3_trab.localidade!='Não se aplica'
group by nuts3_res_1amc.id, nuts3_res_1amc.localidade,nuts3_trab.localidade ,nuts3_trab.id
order by id ,id2
Give me this error:
ERROR: more than one row returned by a subquery used as an expression SQL state: 21000