BEGIN
  WITH max AS (
    SELECT
      COUNT(*) AS maxAmount
    FROM
      one_etl.mgm_header
    WHERE
      Mgm_HeaderIsActive = 'Y'
      AND Mgm_HeaderType = 'L'
      AND Mgm_HeaderMgm_McuID = PID
  ), 
  perItem AS (
    SELECT
      COUNT(*) AS xTotalPerItem
      , Mcu_KelainanGroupName
      , Mgm_HeaderMgm_McuID
    FROM
      one_etl.mgm_header
      JOIN one_etl.mgm_detail
    ON Mgm_HeaderID = Mgm_DetailMgm_HeaderID
    AND Mgm_HeaderIsActive = 'Y'
    AND Mgm_DetailIsActive = 'Y'
    JOIN one_etl.mcu_kelainangroup
    ON Mgm_DetailMcu_KelainanGroupID = Mcu_KelainanGroupID
    AND Mcu_KelainanGroupIsActive = 'Y'
    WHERE
      Mgm_HeaderType = 'L'
      AND Mgm_HeaderMgm_McuID = PID
    GROUP BY
      Mgm_DetailMcu_KelainanGroupID
    ORDER BY
      xTotalPerItem DESC
    LIMIT
      0, 10
  )
  SELECT
    perItem.xTotalPerItem
    , perItem.Mcu_KelainanGroupName
    , perItem.Mgm_HeaderMgm_McuID
    , (perItem.xTotalPerItem / max.maxAmount) * 100 AS Percentage
  FROM
    perItem
    , max;

END