-- # -- 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. Na początku, w tabeli campaigns jest 4 wiersze:
-- # -- | campaign | action_type |
-- # -- |-------------|-------------|
-- # -- | promo_dogs | push |
-- # -- | promo_cats | banner | <- losowo zduplikowane
-- # -- | promo_cats | banner | <- dwa wiersze
-- # -- | promo_rats | push |
# # -- Dodatkowo wiadomo, ż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 planach.
-- # -- 1.1 Co wyświetli 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
-- # -- 1.2 Jak zmieni się odpowiedź, jeśli zmieni się typ JOIN na LEFT?
-- # -- 1.3 Podaj kolejność wykonywania operatorów w tym zapytaniu.
-- Odpowiedź:
promo_dogs ... ...