0Pricing
Digital Marketing Academy · Lekcja

Łączenie tabel marketingowych

Sesje, użytkownicy i zamówienia

Łączenie tabel marketingowych to bezpłatna lekcja Digital Marketing Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Digital Marketing Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Digital Marketing Academy zawiera 4 lekcji w sumie.

Po co używać JOIN?

Rzeczywiste pytania często dotyczą wielu tabel. Wydatki znajdują się w kampaniach, przychody w zamówieniach, a cechy użytkowników w tabeli users. Aby obliczyć ROAS lub LTV według segmentu, trzeba je połączyć.

JOIN dopasowuje wiersze z dwóch tabel na podstawie wspólnego klucza, takiego jak user_id lub campaign_id.

SELECT o.order_id, u.country
FROM orders o
JOIN users u ON o.user_id = u.user_id;

INNER JOIN

INNER JOIN zwraca tylko te wiersze, które mają dopasowanie w obu tabelach. Zamówienia bez pasującego użytkownika oraz użytkownicy bez zamówień zostają pominięci.

Należy użyć go wtedy, gdy interesują Państwa wyłącznie rekordy istniejące po obu stronach, na przykład kupujący.

SELECT u.user_id, u.country, SUM(o.revenue) AS revenue
FROM users u
JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id, u.country;

LEFT JOIN

LEFT JOIN zachowuje każdy wiersz z lewej tabeli, nawet jeśli po prawej stronie nie ma dopasowania. Brakujące wartości są zwracane jako NULL.

W ten sposób można znaleźć użytkowników, którzy nigdy nie złożyli zamówienia, lub sesje, które nigdy nie zakończyły się konwersją.

SELECT u.user_id, COALESCE(SUM(o.revenue), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id;

Znajdowanie brakujących dopasowań

Połączenie LEFT JOIN ze sprawdzeniem NULL pozwala wyodrębnić niedopasowane rekordy. Pytanie „które rejestracje nigdy nie doprowadziły do zakupu?” to klasyczny problem związany z retencją.

Wartość NULL po prawej stronie oznacza, że nie istniało żadne pasujące zamówienie.

SELECT u.user_id, u.signup_date
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
WHERE o.order_id IS NULL;

Łączenie sesji z zamówieniami

Połączenie sesji z zamówieniami zestawia zachowanie z rezultatem. Dopasowanie po user_id pozwala sprawdzić, który ruch ostatecznie doprowadził do zakupu.

To podstawa analizy atrybucji kanałów.

SELECT s.channel, SUM(o.revenue) AS revenue
FROM sessions s
JOIN orders o ON o.user_id = s.user_id
GROUP BY s.channel;

Obliczanie ROAS

Rzeczywiste ROAS wymaga zestawienia wydatków i przychodu. Należy połączyć kampanie z zamówieniami po campaign_id, a następnie podzielić sumy.

NULLIF chroni przed dzieleniem przez zero wydatków.

SELECT c.campaign_id,
       SUM(o.revenue) / NULLIF(SUM(c.spend), 0) AS roas
FROM campaigns c
LEFT JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.campaign_id;

Aliasy tabel

Aliasy (o dla orders, u dla users) sprawiają, że zapytania obejmujące wiele tabel są krótkie i jednoznaczne. Należy zawsze kwalifikować kolumny, gdy ta sama nazwa występuje w obu tabelach.

Jasne aliasy znacznie ułatwiają czytanie i debugowanie złożonych połączeń.

SELECT c.name AS campaign, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.name;

Łączenie trzech tabel

Można łączyć kolejne tabele za pomocą JOIN, aby zestawić więcej niż dwie tabele. W tym przypadku łączymy kampanie z zamówieniami, a następnie z użytkownikami, aby podzielić przychód według kraju.

Każdy JOIN dodaje kolejną klauzulę ON, która łączy nową tabelę z istniejącym zestawem.

SELECT c.name, u.country, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
JOIN users u ON u.user_id = o.user_id
GROUP BY c.name, u.country;

Należy uważać na poziom szczegółowości

Łączenie relacji jeden-do-wielu może zwielokrotnić liczbę wierszy i zawyżyć sumy. Jeśli jedna kampania ma wiele zamówień, sumowanie wydatków przy każdym zamówieniu policzy je wielokrotnie.

Należy najpierw osobno zagregować obie strony, a następnie połączyć sumy, aby zachować wiarygodność danych.

SELECT c.campaign_id, c.total_spend, r.revenue
FROM campaigns c
JOIN (
  SELECT campaign_id, SUM(revenue) AS revenue
  FROM orders GROUP BY campaign_id
) r ON r.campaign_id = c.campaign_id;

Atrybucja pierwszego kontaktu

Aby przypisać zasługę pierwszemu kanałowi, z którego przyszedł użytkownik, należy znaleźć najwcześniejszą sesję każdego użytkownika, a następnie połączyć ją z jego zamówieniami.

Podzapytanie wyodrębnia pierwszy kontakt przed połączeniem z przychodem.

SELECT f.channel, SUM(o.revenue) AS revenue
FROM (
  SELECT DISTINCT ON (user_id) user_id, channel
  FROM sessions ORDER BY user_id, session_date
) f
JOIN orders o ON o.user_id = f.user_id
GROUP BY f.channel;

JOIN w praktyce

JOIN to miejsce, w którym SQL marketingowy pokazuje swoją siłę. Wydatki plus przychód dają ROAS, sesje plus zamówienia dają atrybucję, a użytkownicy plus zamówienia dają LTV według segmentu.

Należy wybrać INNER, gdy obie strony muszą istnieć, oraz LEFT, gdy chcą Państwo zachować wszystkie rekordy i przeanalizować brakujące dopasowania.

Szybkie sprawdzenie

Chcą Państwo wyświetlić każdego zarejestrowanego użytkownika, również tych, którzy nigdy nie złożyli zamówienia. Którego JOIN należy użyć?

Podsumowanie

INNER JOIN zachowuje dopasowania po obu stronach, a LEFT JOIN zachowuje wszystkie wiersze z lewej strony i ujawnia brakujące dopasowania. Aliasy oraz kwalifikowane nazwy kolumn pomagają utrzymać przejrzystość zapytań.

Należy uważać na pułapkę zwielokrotnienia przy złączeniach jeden-do-wielu; wstępna agregacja pozwala zachować poprawność sum. Następnie: zapytania dotyczące kohort i lejków.

Często zadawane pytania

Czy lekcja „Łączenie tabel marketingowych” jest bezpłatna?

Tak — pełny tekst „Łączenie tabel marketingowych” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Digital Marketing Academy, przejdź na CoddyKit PRO. Kurs Digital Marketing Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Łączenie tabel marketingowych”?

Sesje, użytkownicy i zamówienia Ćwiczysz Digital Marketing Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Digital Marketing Academy?

Nie wymagamy żadnego doświadczenia. Digital Marketing Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Łączenie tabel marketingowych”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Digital Marketing Academy?

Tak. Każda lekcja Digital Marketing Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Dlaczego marketerzy uczą się SQL
  2. SELECT, WHERE, GROUP BY
  3. Łączenie tabel marketingowych
  4. Zapytania kohortowe i lejkowe
← Powrót do Digital Marketing Academy