-- # -- Gli esperti di marketing 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 - registro backend con le comunicazioni di queste campagne inviate 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 |
-- # -- | promo_cats | banner | <- duplicato casualmente
-- # -- | promo_cats | banner | <- due righe
-- # -- | promo_rats | push |
# # -- Inoltre, si sa 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
-- # -- 1.2 Come cambierà la risposta se si cambia il tipo di JOIN in LEFT?
-- # -- 1.3 Indicare l'ordine di esecuzione degli operatori in questa query.
-- Risposta:
promo_dogs ... ...