1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| CREATE OR REPLACE VIEW secto_elem_global_result (nom_sect, niveau, effectifs)
AS
(SELECT c.nom_sect, t.niveau, t.effectifs
FROM (SELECT
"SIMULATION_SECTEURS_ECOLES_ELEMENTAIRES".id AS nom_sect,
CASE
WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CP' THEN 'niveau_1_CP'
WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CE1' THEN 'niveau_2_CE1'
WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CE2' THEN 'niveau_3_CE2'
WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CM1' THEN 'niveau_4_CM1'
WHEN "BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932".inscr_2016 = 'CM2' THEN 'niveau_5_CM2'
ELSE 'non_elem'
end AS niveau,
count(*) AS effectifs
FROM postgres.postgres."BD_EFFECTIF_SCOLAIRE_SIMULATION_CLICHY_L932" t
INNER JOIN postgres.postgres."SIMULATION_SECTEURS_ECOLES_ELEMENTAIRES" c
ON ST_WITHIN(c.geometry, t.geometry2))
GROUP BY c.nom_sect, t.niveau
ORDER BY c.nom_sect, t.niveau);
CREATE OR REPLACE VIEW secto_elem_global_tableau
AS SELECT *
FROM crosstab(
'select nom_sect, niveau, effectifs
from secto_elem_global_result
where niveau = ''niveau_1_CP'' OR niveau = ''niveau_2_CE1'' OR niveau = ''niveau_3_CE2'' OR niveau = ''niveau_4_CM1'' OR niveau = ''niveau_5_CM2''
ORDER BY 1,2')
AS
(id character varying (25),
niveau_1_CP bigint,
niveau_2_CE1 bigint,
niveau_3_CE2 bigint,
niveau_4_CM1 bigint,
niveau_5_CM2 bigint); |
Partager