PostgreSQL - Querying Second Table with Multiple Results
Test:

SELECT e.name, 
       MIN(a.startDate) startDate, 
       MAX(a.endDate) endDate, 
       CASE WHEN SUM(a.Status != 'Approved')=0 
              THEN 'Completed' 
              ELSE 'Pending' 
         END status
FROM Events e
JOIN Activities a ON e.id = a.eventId
GROUP BY e.name


If fail replace SUM(a.Status != 'Approved') with SUM(CASE WHEN a.Status != 'Approved' THEN 1 ELSE 0 END).