BLOG · PROGRAMMATIC SEO

Jak analizować dane SEO za pomocą zapytań SQL?

✍️ Autor: Zespół semprojekt 🎯 Kategorie: Programmatic SEO, Ruch organiczny

SQL umożliwia analizę SEO poprzez łączenie danych z narzędzi analitycznych, logów serwera i danych crawlowania, normalizację pól i uruchamianie zapytań do identyfikowania trendów, problemów technicznych oraz wpływu zmian na ruch i konwersje.

Jak przygotować dane do analizy SEO w SQL

  • Określ cele analizy i kluczowe metryki.
  • Zbierz dane z źródeł SEO: Google Analytics, Google Search Console, logi serwera, pliki crawlu.
  • Znormalizuj pola: data, strona (page_url), źródło (source), medium, urządzenie, wyświetlenia (impressions), kliknięcia (clicks), sesje, CTR, pozycje.
  • Stwórz jedną warstwę danych (data warehouse) z tabelami seo_data, seo_keywords, server_logs itp.
  • Ustal strefy czasowe i zakres dat, aby porównania były spójne.

Źródła danych i model danych

  • Google Analytics / BigQuery export: ruch organiczny, CTR, sesje.
  • Google Search Console: wyświetlenia, kliknięcia, średnia pozycja, słowa kluczowe.
  • Logi serwera: statusy HTTP, błędy 404/301, ścieżki użytkowników.
  • Dane crawlowe: listy URL, przekierowania, kanoniczność.
  • Wspólny model: daty, page_url, keyword, source, medium, device, metrics.

Przykładowa struktura zapytań i praktyki

  • Używaj CTE do czytelności, np. zdefiniuj zakres dat w jednym miejscu.
  • Utrzymuj unikalne identyfikatory stron i przekierowań, aby uniknąć duplikatów.
  • Zabezpiecz się przed błędami typów danych i NULL.
  • Zastosuj indeksy/partycjonowanie po dacie dla dużych zestawów danych.

Przykładowe zapytania SQL do analizy SEO

  • Najpopularniejsze strony w ruchu organicznym (wybrany zakres):

    SELECT page_url, SUM(organic_sessions) AS sessions
    

    FROM seo_data

    WHERE date BETWEEN '' AND ''

    AND source = 'google' AND medium = 'organic'

    GROUP BY page_url

    ORDER BY sessions DESC

    LIMIT 50;

  • Średni CTR i całkowite wyświetlenia wg słów kluczowych:

    SELECT keyword, AVG(ctr) AS avg_ctr, SUM(impressions) AS total_impressions, SUM(clicks) AS total_clicks
    

    FROM seo_keywords

    WHERE date BETWEEN '' AND ''

    GROUP BY keyword

    ORDER BY total_clicks DESC

    LIMIT 100;

  • Ruch konwersyjny z SEO:

    SELECT page_url, SUM(conversions) AS conversions, SUM(revenue) AS revenue
    

    FROM seo_conversions

    WHERE date BETWEEN '' AND ''

    GROUP BY page_url

    ORDER BY conversions DESC;

  • Strony z wysokimi wyświetleniami, niskim CTR:

    SELECT page_url, SUM(impressions) AS impressions, SUM(clicks) AS clicks,
    

    (SUM(clicks) / NULLIF(SUM(impressions), 0)) AS ctr

    FROM seo_data

    WHERE date BETWEEN '' AND ''

    GROUP BY page_url

    HAVING SUM(impressions) > 1000

    ORDER BY ctr ASC

    LIMIT 50;

  • Wykrywanie błędów technicznych (404/301) w logach serwera:

    SELECT page_url, status_code, COUNT(*) AS occurrences
    

    FROM server_logs

    WHERE status_code IN (404, 301, 302)

    AND date BETWEEN '' AND ''

    GROUP BY page_url, status_code

    ORDER BY occurrences DESC;

  • Porównanie zmian przed/po update:

    WITH before AS (
    

    SELECT date, sessions FROM seo_data WHERE date BETWEEN '' AND ''

    ),

    after AS (

    SELECT date, sessions FROM seo_data WHERE date BETWEEN '' AND ''

    )

    SELECT 'Before' AS period, AVG(sessions) AS avg_sessions FROM before

    UNION ALL

    SELECT 'After', AVG(sessions) FROM after;

Najlepsze praktyki i pułapki

  • Dane jakościowe: sprawdzaj źródła i dopasowanie pól, eliminuj duplikaty.
  • Zakres dat: uwzględniaj strefy czasowe i czas przetwarzania danych.
  • Wydajność: stosuj partycjonowanie, agregacje i indeksy.
  • Planowanie ETL: automatyzuj aktualizacje danych i dokumentuj schemat.
  • Interpretacja: porównuj okresy rok do roku i miesiąc do miesiąca.

Pułapki przy analizie danych SEO w SQL

  • Współistnienie różnych źródeł danych bez jednolitych definicji pól.
  • Różnice w samplingu w GA i importowanych danychach.
  • Brak kontekstu biznesowego przy interpretacji liczb.
  • Niewłaściwe obsłużenie NULL i wartości ujemnych.

Narzędzia i praktyki wdrożeniowe

  • Wybierz platformę analityczną: BigQuery, Snowflake, Redshift, PostgreSQL itp.
  • Modeluj dane w tematyczne tabele: seo_data, seo_keywords, server_logs, crawls.
  • Wdroż ETL/ELT: harmonogramy, walidacje danych, testy jakości.
  • Dokumentuj zapytania i twórz katalog metryk SEO.

Często Zadawane Pytania

Czym jest analiza SEO za pomocą SQL?

Analiza SEO w SQL polega na łączeniu i przetwarzaniu danych z różnych źródeł w celu mierzenia ruchu organicznego, widoczności i konwersji.

Jakie źródła danych są potrzebne do analizy SEO w SQL?

Najważniejsze źródła to Google Analytics, Google Search Console, logi serwera oraz dane z crawlu, które trzeba zintegrować w jednej warstwie danych.

Jakie metryki SEO warto analizować w SQL?

Najważniejsze metryki to sessions, clicks, impressions, ctr, average_position, conversions i revenue, a także wskaźniki błędów 404/301.

Jak połączyć dane z Google Analytics i Google Search Console w SQL?

Wyeksportuj dane z obu źródeł do wspólnego schematu (np. data, page_url, keyword, source, medium, metrics) i dopasuj po dacie i URL.

Jakie są typowe pułapki przy analizie danych SEO w SQL?

Pułapki to brak jednolitych definicji pól, sampling, różne strefy czasowe, duplikaty i błędna interpretacja wskaźników.

Jakie narzędzia wspierają analizę SEO w SQL?

Popularne narzędzia to BigQuery, Snowflake, Redshift, PostgreSQL i narzędzia BI do wizualizacji danych.

Jak mierzyć wpływ zmian SEO na konwersje w SQL?

Porównuj okresy przed i po zmianach, analizuj konwersje i revenue dla stron/URL w ruchu organicznym.

Jak zacząć od zera model danych SEO w SQL?

Zdefiniuj schemat danych, zrób ETL, scal dane źródłowe, przygotuj metryki i napisz pierwsze zapytania porównujące okresy.

ZOBACZ TAKŻE:

Zdobądź darmowy ruch organiczny
Programmatic SEO w praktyce
Pobierz bezpłatny materiał o tym, jak zbudować system, który generuje stały ruch z Google bez zwiększania budżetu reklamowego.
Pobierz PDF
Plik PDF. Zero spamu.