-- I marketer avviano campagne promozionali nell'app del servizio. Ci sono due tabelle:
-- campaigns – elenco delle campagne
-- - campaign – nome della campagna
-- - action_type – tipo di campagna: "push" o "banner"
-- communications – log del backend con le comunicazioni di queste campagne agli utenti
-- - user_id – identificativo utente
-- - campaign – nome della campagna
-- - status – stato dell'evento: "success" o "error"
---------------------------------------------------------------------------
-- 1. Inizialmente, nella tabella campaigns ci sono 4 righe:
-- | campaign | action_type |
-- |-------------|-------------|
-- | promo_dogs | push | <- duplicato casualmente
-- | promo_cats | banner |
-- | promo_cats | banner | <- due righe
-- | promo_rats | push |
-- È anche noto che:
-- le campagne promo_dogs e promo_cats sono state completate con successo su 100 utenti e ogni utente ha ricevuto una comunicazione,
-- mentre promo_rats è ancora in fase di pianificazione.
-- 1.1 Cosa mostrerà la query:
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 Come cambierà la risposta se si cambia il tipo di JOIN in LEFT?