-- Os profissionais de marketing lançam campanhas promocionais na aplicação do serviço. Existem duas tabelas:
-- campaigns – lista de campanhas
-- - campaign – nome da campanha
-- - action_type – tipo de campanha: "push" ou "banner"
-- communications – registo do backend com envios de comunicações dessas campanhas aos utilizadores
-- - user_id – identificador do utilizador
-- - campaign – nome da campanha
-- - status – estado do evento: "success" ou "error"
---------------------------------------------------------------------------
-- 1. Inicialmente, na tabela campaigns, há 4 linhas:
-- | campaign | action_type |
-- |-------------|-------------|
-- | promo_dogs | push | <- duplicado aleatoriamente
-- | promo_cats | banner |
-- | promo_cats | banner | <- duas linhas
-- | promo_rats | push |
-- Sabe-se também que:
-- as campanhas promo_dogs e promo_cats foram bem-sucedidas em 100 utilizadores, e cada utilizador recebeu uma comunicação,
-- e promo_rats está apenas em planeamento.
-- 1.1 O que a consulta irá mostrar:
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 Como a resposta mudará se trocar o tipo de JOIN para LEFT?