WITH sales_agg AS (
SELECT merchant_id, SUM(sale_amount) AS total_sales
FROM sales_underline
GROUP BY merchant_id
),
refunds_agg AS (
SELECT merchant_id, SUM(refund_amount) AS total_refunds
FROM refunds_underline
GROUP BY merchant_id
),
sat_agg AS (
SELECT merchant_id, AVG(satisfaction_score) AS avg_satisfaction
FROM satisfaction_underline
GROUP BY merchant_id
)
SELECT
mer.merchant_id,
mer.merchant_name,
ROUND(COALESCE(s.total_sales, 0), 2) AS total_sales_amount,
ROUND(COALESCE(r.total_refunds, 0), 2) AS total_refund_amount,
ROUND(COALESCE(sat.avg_satisfaction, 0), 2) AS average_satisfaction_score
FROM merchants_underline mer
LEFT JOIN sales_agg s ON mer.merchant_id = s.merchant_id
LEFT JOIN refunds_agg r ON mer.merchant_id = r.merchant_id
LEFT JOIN sat_agg sat ON mer.merchant_id = sat.merchant_id;