0
I’m making a query to get percentage by zone but it’s not working very well for me
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 put this way only for the little one works 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='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 this back to me error:
ERROR: more than one Row returned by a subquery used as an Expression SQL state: 21000
The two queries are equal and neither produces the pointed error
– Clodoaldo Neto
I saw that yes I had to make a select after the from
– usersantos