-- Marketer starten Promotionskampagnen in der Service-App. Es gibt zwei Tabellen:
-- campaigns – Liste der Kampagnen
-- - campaign – Name der Kampagne
-- - action_type – Kampagnentyp: "push" oder "banner"
-- communications – Backend-Log mit den Versandprotokollen dieser Kampagnen an die Nutzer
-- - user_id – Nutzer-ID
-- - campaign – Name der Kampagne
-- - status – Status des Ereignisses: "success" oder "error"
---------------------------------------------------------------------------
-- 1. Anfangs gibt es in der Tabelle campaigns 4 Zeilen:
-- | campaign | action_type |
-- |-------------|-------------|
-- | promo_dogs | push | <- zufällig dupliziert
-- | promo_cats | banner |
-- | promo_cats | banner | <- zwei Zeilen
-- | promo_rats | push |
-- Es ist auch bekannt, dass:
-- die Kampagnen promo_dogs und promo_cats erfolgreich bei 100 Nutzern durchgeführt wurden, wobei jeder Nutzer eine Kommunikation erhielt,
-- und promo_rats ist nur in Planung.
-- 1.1 Was die Abfrage ausgibt:
SELECT
campaign,
COUNT(*) as rows,
COUNT(DISTINCT co.user_id) AS users
FROM campaigns AS ca
INNER JOIN communications AS co
ON ca.campaign = co.campaign
GROUP BY ca.campaign AS campaign
-- 1.2 Wie sich die Antwort ändert, wenn der JOIN-Typ auf LEFT geändert wird?