SELECT, WHERE, GROUP BY
Agregowanie danych kampanii
SELECT, WHERE, GROUP BY to bezpłatna lekcja Digital Marketing Academy na CoddyKit. To lekcja 2 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.
Trzy czasowniki
Niemal każda metryka marketingowa opiera się na trzech klauzulach: SELECT wybiera kolumny, WHERE filtruje wiersze, a GROUP BY łączy wiersze w segmenty.
Opanowanie tego zestawu pozwala samodzielnie odpowiadać na większość codziennych pytań analitycznych.
SELECT channel, SUM(revenue) AS revenue
FROM orders
GROUP BY channel;SELECT: Wybieranie kolumn
SELECT określa, jakie dane mają zostać zwrócone. Za pomocą AS można zmieniać nazwy kolumn, aby wynik był czytelny, oraz obliczać nowe wartości bezpośrednio w zapytaniu.
Wyniki powinny być zwięzłe: należy pobierać tylko naprawdę potrzebne kolumny, szczególnie w przypadku dużych tabel.
SELECT campaign_id AS campaign,
spend,
spend * 1.2 AS spend_with_fees
FROM campaigns;WHERE: Filtrowanie wierszy
WHERE pozostawia tylko wiersze spełniające określony warunek. Warunki można łączyć za pomocą AND i OR, aby precyzyjnie wyodrębnić segment.
Filtrowanie według dat to podstawowe narzędzie marketera, pozwalające dokładnie określić przedział raportowania.
SELECT *
FROM sessions
WHERE channel = 'email'
AND session_date >= DATE '2026-01-01'
AND device = 'mobile';Filtrowanie za pomocą IN i BETWEEN
IN dopasowuje dowolną wartość z listy, dzięki czemu doskonale nadaje się do jednoczesnego wyboru kilku kampanii. BETWEEN obejmuje zakres, co sprawdza się przy określaniu przedziałów dat.
Dzięki nim złożone filtry pozostają krótkie i czytelne, zamiast tworzyć długie ciągi OR.
SELECT order_id, revenue
FROM orders
WHERE channel IN ('paid_search', 'paid_social')
AND order_date BETWEEN DATE '2026-03-01' AND DATE '2026-03-31';GROUP BY: Segmentowanie
GROUP BY łączy wiersze o wspólnej wartości w jeden wiersz dla każdej grupy. W połączeniu z funkcjami agregującymi, takimi jak SUM, COUNT i AVG, pozwala uzyskać metryki dla poszczególnych segmentów.
W ten sposób surowe zdarzenia można przekształcić w tabelę wyników dla każdego kanału.
SELECT channel,
COUNT(*) AS sessions,
SUM(revenue) AS revenue
FROM sessions
GROUP BY channel;Funkcje agregujące
SUM sumuje przychody, COUNT zlicza zdarzenia, AVG oblicza średnią, a COUNT(DISTINCT ...) zlicza unikalnych użytkowników.
Unikalne wartości mają w marketingu duże znaczenie: łączna liczba sesji i liczba unikalnych odwiedzających to zupełnie różne liczby.
SELECT campaign_id,
COUNT(*) AS clicks,
COUNT(DISTINCT user_id) AS reach,
AVG(revenue) AS avg_order
FROM orders
GROUP BY campaign_id;Grupowanie według wielu kolumn
Można grupować dane według więcej niż jednej kolumny, aby zbudować macierz, na przykład kanał według urządzenia. Każda unikalna kombinacja staje się osobnym wierszem.
Pozwala to prowadzić dokładniejszą segmentację bez eksportowania danych do arkusza kalkulacyjnego.
SELECT channel, device,
COUNT(*) AS sessions
FROM sessions
GROUP BY channel, device
ORDER BY channel, sessions DESC;HAVING: filtrowanie grup
WHERE filtruje wiersze przed grupowaniem, a HAVING filtruje grupy po agregacji. HAVING pozwala zachować tylko te segmenty, które przekraczają określony próg.
Można na przykład wyświetlić tylko kampanie, które wygenerowały więcej niż 100 zamówień.
SELECT campaign_id, COUNT(*) AS orders
FROM orders
GROUP BY campaign_id
HAVING COUNT(*) > 100
ORDER BY orders DESC;Sortowanie i ograniczanie wyników
ORDER BY sortuje wyniki, dzięki czemu najważniejsze wiersze pojawiają się na początku. LIMIT ogranicza liczbę wyświetlanych wierszy, co doskonale sprawdza się w raportach typu top-N.
Razem pozwalają natychmiast odpowiedzieć na pytanie: „które 5 kampanii ma najwyższy przychód?”.
SELECT campaign_id, SUM(revenue) AS revenue
FROM orders
GROUP BY campaign_id
ORDER BY revenue DESC
LIMIT 5;Agregacja warunkowa
FILTER (lub CASE wewnątrz funkcji agregującej) pozwala obliczyć w jednym zapytaniu kilka metryk warunkowych, na przykład przychód od nowych i powracających klientów.
Dzięki temu nie trzeba uruchamiać wielu zapytań, a segmenty pozostają idealnie spójne.
SELECT channel,
SUM(revenue) FILTER (WHERE is_new_customer) AS new_rev,
SUM(revenue) FILTER (WHERE NOT is_new_customer) AS repeat_rev
FROM orders
GROUP BY channel;Połączenie wszystkich elementów
Pełne zapytanie łączy wszystkie klauzule: filtruje wiersze za pomocą WHERE, grupuje je, filtruje grupy za pomocą HAVING, a następnie sortuje i ogranicza wyniki.
Przeczytane od góry do dołu opowiada kompletną historię analityczną dotyczącą kanałów.
SELECT channel, SUM(revenue) AS revenue
FROM orders
WHERE order_date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY channel
HAVING SUM(revenue) > 1000
ORDER BY revenue DESC;Szybkie sprawdzenie
Chcą Państwo wyświetlić tylko grupy kampanii obejmujące więcej niż 50 zamówień. Która klauzula filtruje zagregowane grupy?
Podsumowanie
SELECT wybiera kolumny, WHERE filtruje wiersze, GROUP BY dzieli je na segmenty, HAVING filtruje grupy, a ORDER BY wraz z LIMIT kształtują wynik.
Agregacja warunkowa pozwala obliczyć kilka metryk w jednym przebiegu. Następnie: łączenie danych z wielu tabel za pomocą JOIN.
Często zadawane pytania
Czy lekcja „SELECT, WHERE, GROUP BY” jest bezpłatna?
Tak — pełny tekst „SELECT, WHERE, GROUP BY” 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 „SELECT, WHERE, GROUP BY”?
Agregowanie danych kampanii Ć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 2 z 4.
Ile czasu zajmuje lekcja „SELECT, WHERE, GROUP BY”?
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
- Dlaczego marketerzy uczą się SQL
- SELECT, WHERE, GROUP BY
- Łączenie tabel marketingowych
- Zapytania kohortowe i lejkowe