-- Marketerzy uruchamiają kampanie promocyjne w aplikacji serwisu. Istnieją dwie tabele:
-- campaigns – lista kampanii
-- - campaign – nazwa kampanii
-- - action_type – typ kampanii: "push" lub "banner"
-- communications – log backendu z wysyłkami komunikacji tych kampanii do użytkowników
-- - user_id – identyfikator użytkownika
-- - campaign – nazwa kampanii
-- - status – status zdarzenia: "success" lub "error"
---------------------------------------------------------------------------
-- 1. Początkowo w tabeli campaigns jest 4 wiersze:
-- | campaign | action_type |
-- |-------------|-------------|
-- | promo_dogs | push | <- losowo zduplikowane
-- | promo_cats | banner |
-- | promo_cats | banner | <- dwa wiersze
-- | promo_rats | push |
-- Wiadomo też, że:
-- kampanie promo_dogs i promo_cats zostały pomyślnie przeprowadzone na 100 użytkownikach, a każdy użytkownik otrzymał jedną komunikację,
-- a promo_rats jest jeszcze w fazie planowania.
-- 1.1 Co zwróci zapytanie:
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 Jak zmieni się odpowiedź, jeśli zmieni się typ JOIN na LEFT?