Indicateur crise de confiance

Code pour obtenir la proportion d'établissements non conventionnels sur la base Sirene dans une commune spécifique

CREATE TABLE sirene_la_ciotat_sante AS 
WITH base_data AS (
    -- On isole d'abord les établissements actifs, sièges et de santé à La Ciotat
    SELECT * FROM read_csv_auto('C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Brut\StockEtablissement_utf8.csv', ALL_VARCHAR=TRUE)
    WHERE codeCommuneEtablissement = '13028' 
      AND etatAdministratifEtablissement = 'A'
      AND etablissementSiege = 'true'
      AND activitePrincipaleEtablissement IN (
          '86.90E', '86.90D', '86.23Z', 
          '86.22C', '86.22B', '86.22A', '86.21Z', '86.90F'
      )
)
SELECT 
    *,
    -- Calcul de l'indicateur : (Nombre de 86.90F / Nombre total de la sélection) * 100
    (COUNT(*) FILTER (WHERE activitePrincipaleEtablissement = '86.90F') OVER () * 100.0 / COUNT(*) OVER ()) as part_non_conv
FROM base_data;

-- Exportation vers un CSV propre pour QGIS
COPY sirene_la_ciotat_sante TO 'C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Brut\Sirene_Sante_La_Ciotat_Clean.csv' (HEADER, DELIMITER ',');

Code pour obtenir la proportion d'établissements non conventionnels sur la base Sirene dans un département : 

-- 1. Création de la table pour tout le département 13
CREATE TABLE sirene_13_sante_complet AS 
WITH base_data AS (
    -- On extrait les données brutes avec les filtres de base
    SELECT * FROM read_csv_auto('C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Brut\StockEtablissement_utf8.csv', ALL_VARCHAR=TRUE)
    WHERE codeCommuneEtablissement LIKE '13%' 
      AND etatAdministratifEtablissement = 'A'
      AND etablissementSiege = 'true'
      AND activitePrincipaleEtablissement IN (
          '86.90E', '86.90D', '86.23Z', 
          '86.22C', '86.22B', '86.22A', '86.21Z', '86.90F'
      )
)
SELECT 
    *,
    -- Calcul de l'indicateur arrondi à 2 décimales
    ROUND(
        (COUNT(*) FILTER (WHERE activitePrincipaleEtablissement = '86.90F') OVER () * 100.0 / COUNT(*) OVER ()), 
        2
    ) as part_non_conv
FROM base_data;

-- 2. Exportation du fichier départemental
COPY sirene_13_sante_complet TO 'C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Brut\Sirene_Sante_13_Final.csv' (HEADER, DELIMITER ',');

Modification rougeole et grippe : 

-- 1. TRAITEMENT DE LA BASE GRIPPE
-- On crée la table en mémoire avec la moyenne du 13
CREATE TABLE Vacc_Grippe_13 AS
SELECT 
    *,
    -- Calcul de la moyenne sur la colonne 'Vaccines' pour le 13 uniquement
    ROUND(AVG(Vaccines) OVER (), 2) as moy_vacc_grippe_13
FROM read_csv_auto('C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Region\Vacc_Grippe.csv')
-- Conversion de Code en texte pour permettre le filtrage LIKE '13%'
WHERE CAST(Code AS VARCHAR) LIKE '13%';

-- Exportation vers le fichier CSV réel
COPY Vacc_Grippe_13 TO 'C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Region\Vacc_Grippe_13_Clean.csv' (HEADER, DELIMITER ',');


-- 2. TRAITEMENT DE LA BASE ROUGEOLE
-- On crée la table en mémoire avec la moyenne du 13
CREATE TABLE Vacc_Rougeole_13 AS
SELECT 
    *,
    -- Calcul de la moyenne sur la colonne 'Vaccination' pour le 13 uniquement
    ROUND(AVG(Vaccination) OVER (), 2) as moy_vacc_rougeole_13
FROM read_csv_auto('C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Region\Vacc_Rougeole.csv')
-- Conversion de Code en texte pour permettre le filtrage LIKE '13%'
WHERE CAST(Code AS VARCHAR) LIKE '13%';

-- Exportation vers le fichier CSV réel
COPY Vacc_Rougeole_13 TO 'C:\Users\eliob\OneDrive\Documents\NEXTE\Stage\1ere semaine\Lundi\PACA\Data Region\Vacc_Rougeole_13_Clean.csv' (HEADER, DELIMITER ',');

Creation Indicateurs Commune : 

-- 1. CREATION DE LA TABLE
CREATE TABLE Table_Indicateurs_Final AS 
SELECT 
    r.Code,
    -- Calcul avec les noms de colonnes exacts détectés par DuckDB
    ROUND(
        (0.5 * CAST(r.Vaccination AS FLOAT) + 
         0.25 * CAST(g."Vaccinés" AS FLOAT) + 
         0.25 * AVG(CAST(s.part_8690Z AS FLOAT))), 
    2) AS I_T1_02_Com
FROM 
    read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Rougeole_13_Clean.csv') r
JOIN 
    read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Grippe_13_Clean.csv') g 
    ON CAST(r.Code AS VARCHAR) = CAST(g.Code AS VARCHAR)
JOIN 
    read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene_Sante_La_Ciotat_Clean.csv') s
    ON CAST(r.Code AS VARCHAR) = CAST(s.codeCommuneEtablissement AS VARCHAR)
WHERE 
    CAST(r.Code AS VARCHAR) = '13028'
GROUP BY r.Code, r.Vaccination, g."Vaccinés";

-- 2. EXPORTATION
COPY Table_Indicateurs_Final TO 'C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Indicateurs.csv' (HEADER, DELIMITER ',');

Creation Indicateurs Dept :

 

-- 1. CREATION DE LA TABLE FINALE COMBINEE
CREATE TABLE Table_Indicateurs_Complet AS 
WITH stats_dept AS (
    -- On calcule la valeur départementale (Moyenne des moyennes)
    SELECT 
        AVG(CAST(r.moy_vacc_rougeole_13 AS FLOAT)) * 0.5 + 
        AVG(CAST(g.moy_vacc_grippe_13 AS FLOAT)) * 0.25 + 
        AVG(CAST(s.part_non_conv AS FLOAT)) * 0.25 AS val_dep
    FROM 
        read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Rougeole_13_Clean.csv') r,
        read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Grippe_13_Clean.csv') g,
        -- MISE À JOUR DU CHEMIN ICI :
        read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene_Sante_13_Final.csv') s
)
SELECT 
    r.Code,
    -- Colonne 1 : Indicateur de La Ciotat
    ROUND(
        (0.5 * CAST(r.Vaccination AS FLOAT) + 
         0.25 * CAST(g."Vaccinés" AS FLOAT) + 
         0.25 * AVG(CAST(sc.part_8690Z AS FLOAT))), 
    2) AS I_T1_02_Com,
    -- Colonne 2 : Indicateur du Département
    ROUND((SELECT val_dep FROM stats_dept), 2) AS I_T1_02_Dep
FROM 
    read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Rougeole_13_Clean.csv') r
JOIN 
    read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Grippe_13_Clean.csv') g 
    ON CAST(r.Code AS VARCHAR) = CAST(g.Code AS VARCHAR)
JOIN 
    read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene_Sante_La_Ciotat_Clean.csv') sc
    ON CAST(r.Code AS VARCHAR) = CAST(sc.codeCommuneEtablissement AS VARCHAR)
WHERE 
    CAST(r.Code AS VARCHAR) = '13028'
GROUP BY r.Code, r.Vaccination, g."Vaccinés";

-- 2. EXPORTATION FINALE
COPY Table_Indicateurs_Complet TO 'C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Indicateurs.csv' (HEADER, DELIMITER ',');

Creation colonne Significative : 

-- 1. CRÉATION DE LA TABLE COMPLÈTE AVEC INDICATEURS ET TEST
CREATE TABLE Table_Indicateurs_Final_Test AS 
WITH base_calculs AS (
    -- On récupère les valeurs de la commune et du département
    SELECT 
        r.Code,
        -- p_com (La Ciotat)
        ROUND((0.5 * CAST(r.Vaccination AS FLOAT) + 0.25 * CAST(g."Vaccinés" AS FLOAT) + 0.25 * AVG(CAST(sc.part_8690Z AS FLOAT))), 2) AS p_com,
        -- p_dep (Moyenne du 13 calculée dynamiquement)
        (SELECT ROUND(
            AVG(CAST(rv.moy_vacc_rougeole_13 AS FLOAT)) * 0.5 + 
            AVG(CAST(gv.moy_vacc_grippe_13 AS FLOAT)) * 0.25 + 
            AVG(CAST(sv.part_non_conv AS FLOAT)) * 0.25, 2
        ) FROM 
            read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Rougeole_13_Clean.csv') rv,
            read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Grippe_13_Clean.csv') gv,
            read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene_Sante_13_Final.csv') sv
        ) AS p_dep,
        -- n : Population de La Ciotat (pour la précision du test)
        35000 AS n
    FROM 
        read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Rougeole_13_Clean.csv') r
    JOIN 
        read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Vacc_Grippe_13_Clean.csv') g ON CAST(r.Code AS VARCHAR) = CAST(g.Code AS VARCHAR)
    JOIN 
        read_csv_auto('C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Sirene_Sante_La_Ciotat_Clean.csv') sc ON CAST(r.Code AS VARCHAR) = CAST(sc.codeCommuneEtablissement AS VARCHAR)
    WHERE CAST(r.Code AS VARCHAR) = '13028'
    GROUP BY r.Code, r.Vaccination, g."Vaccinés"
)
SELECT 
    Code,
    p_com AS I_T1_02_Com,
    p_dep AS I_T1_02_Dep,
    -- Calcul de la marge d'erreur (Z=1.96 pour alpha=5%)
    ROUND(1.96 * SQRT((p_dep/100 * (1 - p_dep/100)) / n) * 100, 3) AS marge_erreur,
    -- Diagnostic final
    CASE 
        WHEN p_com < (p_dep - (1.96 * SQRT((p_dep/100 * (1 - p_dep/100)) / n) * 100)) THEN 'Significativement PLUS BAS'
        WHEN p_com > (p_dep + (1.96 * SQRT((p_dep/100 * (1 - p_dep/100)) / n) * 100)) THEN 'Significativement PLUS HAUT'
        ELSE 'Conforme à la moyenne'
    END AS Interpretation
FROM base_calculs;

-- 2. EXPORTATION
COPY Table_Indicateurs_Final_Test TO 'C:/Users/eliob/OneDrive/Documents/NEXTE/Stage/1ere semaine/Lundi/Indicateur de crise de confiance/Indicateurs.csv' (HEADER, DELIMITER ',');

 


Revision #1
Created 2026-04-10 09:14:48 UTC by Julien
Updated 2026-04-10 09:14:48 UTC by Julien