BEGIN

WITH order_riwayat AS (
    SELECT
        Mgm_RiwayatMcu_RiwayatID,
        Mgm_RiwayatMgm_HeaderID,
        Mgm_HeaderIsNormal
    FROM
        one_etl.mgm_riwayat
    JOIN one_etl.mgm_header
    ON Mgm_RiwayatMgm_HeaderID = Mgm_HeaderID
    WHERE
        Mgm_HeaderMgm_McuID = PID
        AND Mgm_RiwayatMcu_RiwayatGroupID = 6
),
order_location AS (
    SELECT DISTINCT
        COALESCE(NULLIF(Mgm_HeaderM_PatientLocation, ''), '-') AS location,
        Mgm_HeaderID
    FROM
        one_etl.mgm_header
    WHERE
        Mgm_HeaderMgm_McuID = PID
),
total_peserta AS (
    SELECT 
        COALESCE(NULLIF(Mgm_HeaderM_PatientLocation, ''), '-') AS location,
        COUNT(DISTINCT Mgm_HeaderT_OrderHeaderID) AS total_peserta
    FROM 
        one_etl.mgm_header
    WHERE 
        Mgm_HeaderMgm_McuID = PID
        AND Mgm_HeaderIsActive = 'Y'
    GROUP BY 
        COALESCE(NULLIF(Mgm_HeaderM_PatientLocation, ''), '-')
),
Counts AS (
    SELECT
        ol.location AS site_perusahaan,
        -- Hitung ketika Mgm_HeaderIsNormal = 'Y'
        COUNT(CASE WHEN orw.Mgm_RiwayatMcu_RiwayatID = 149 AND (orw.Mgm_HeaderIsNormal = 'Y' OR orw.Mgm_HeaderIsNormal = 'N') THEN 1 END) AS Tidak_Merokok_Y,
        COUNT(CASE WHEN orw.Mgm_RiwayatMcu_RiwayatID IN (150, 151, 152, 153) AND (orw.Mgm_HeaderIsNormal = 'Y' OR orw.Mgm_HeaderIsNormal = 'N') THEN 1 END) AS Merokok_Y,
        COUNT(CASE WHEN orw.Mgm_RiwayatMcu_RiwayatID = 141 AND (orw.Mgm_HeaderIsNormal = 'Y' OR orw.Mgm_HeaderIsNormal = 'N') THEN 1 END) AS Tidak_Minum_Alkohol_Y,
        COUNT(CASE WHEN orw.Mgm_RiwayatMcu_RiwayatID IN (142, 143, 144) AND (orw.Mgm_HeaderIsNormal = 'Y' OR orw.Mgm_HeaderIsNormal = 'N') THEN 1 END) AS Minum_Alkohol_Y,
        COUNT(CASE WHEN orw.Mgm_RiwayatMcu_RiwayatID = 145 AND (orw.Mgm_HeaderIsNormal = 'Y' OR orw.Mgm_HeaderIsNormal = 'N') THEN 1 END) AS Tidak_Rutin_Olahraga_Y,
        COUNT(CASE WHEN orw.Mgm_RiwayatMcu_RiwayatID IN (146, 147, 148) AND (orw.Mgm_HeaderIsNormal = 'Y' OR orw.Mgm_HeaderIsNormal = 'N') THEN 1 END) AS Olahraga_Y,
        -- Hitung Total pasien
        tp.total_peserta AS total_peserta
    FROM
        order_location ol
    LEFT JOIN order_riwayat orw ON ol.Mgm_HeaderID = orw.Mgm_RiwayatMgm_HeaderID
    LEFT JOIN total_peserta tp ON ol.location = tp.location
    GROUP BY
        ol.location, tp.total_peserta
)
SELECT
    site_perusahaan,
    Tidak_Merokok_Y,
    Merokok_Y,
    (total_peserta - (Tidak_Merokok_Y+Merokok_Y)) AS Merokok_NA,
    Tidak_Minum_Alkohol_Y,
    Minum_Alkohol_Y,
     (total_peserta - (Tidak_Minum_Alkohol_Y+Minum_Alkohol_Y)) AS Alkohol_NA,
    Tidak_Rutin_Olahraga_Y,
    Olahraga_Y,
   (total_peserta - (Tidak_Rutin_Olahraga_Y+Olahraga_Y)) AS  Olahraga_NA,
    total_peserta AS Peserta
FROM
    Counts
ORDER BY
    site_perusahaan;

END
