query to get percentage

Asked

Viewed 54 times

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

  • I saw that yes I had to make a select after the from

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.