Requête |
with valeurs_tot as
(
select distinct pays,strate,rang,no_site,regroup_sources as sources,count(distinct no_menage)*txb as nb_menage
from total.liste_site
inner join total.v_liste_menage using(no_site,pays) inner join total.calcul_txb using(no_site,pays)
inner join total.v_menage_sources_revenus using(no_menage,pays) inner join nomenc.regroup_activites using(sources)
where rang in ('1','2','3','4')
group by regroup_sources,pays,rang,no_site,txb,strate order by no_site
),
part2 as
(
select distinct pays,sources,sum((4-(rang::numeric-1))/10*nb_menage) as nb_menage from
(select distinct pays,rang,sources,sum(nb_menage)*txa*txc as nb_menage from valeurs_tot
inner join total.calcul_txa using(strate,pays) inner join total.calcul_txc using (strate,pays) group by pays,rang,sources,txa,txc) T
group by pays,sources
)
,part2_tot as
(select distinct pays,sum(nb_menage) as nb_menage_tot from part2 group by pays)
select distinct pays as ABSCISSE,sources as GROUPE,100*sum(nb_menage)/nb_menage_tot as TOTAL
from part2 inner join part2_tot using(pays)
group by GROUPE,ABSCISSE,nb_menage_tot order by ABSCISSE
|