-- # -- 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 os 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 |
-- # -- | promo_cats | banner | <- duplicado aleatoriamente
-- # -- | promo_cats | banner | <- duas linhas
-- # -- | promo_rats | push |
# # -- Além disso, sabe-se que:
-- # -- as campanhas promo_dogs e promo_cats foram realizadas com sucesso em 100 utilizadores, e cada utilizador recebeu uma comunicação,
-- # -- enquanto que promo_rats está apenas em planeamento.
-- # -- 1.1 O que irá mostrar a consulta:
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 Como mudará a resposta se trocar o tipo de JOIN por LEFT?
-- # -- 1.3 Indique a ordem de execução dos operadores nesta consulta.
-- Resposta:
promo_dogs ... ...