Шаг 084. Используем CTE для читаемого CTR-анализа

sqlГлава 7. CTE, VIEW и оконные функции

Что делаем

Используем CTE для читаемого CTR-анализа

Зачем SEO-специалисту

CTE помогает разбить сложный запрос на понятные блоки.

Код. Вставьте 1 в 1

WITH page_metrics AS (
    SELECT page_id,
           url,
           impressions,
           clicks,
           ctr,
           avg_position
    FROM page_gsc_summary
),
ctr_risks AS (
    SELECT *
    FROM page_metrics
    WHERE impressions >= 500
      AND ctr < 0.02
)
SELECT url,
       impressions,
       clicks,
       ctr,
       avg_position
FROM ctr_risks
ORDER BY impressions DESC;

Построчный разбор: что делает, для чего и как работает

Строка 1: WITH page_metrics AS ( — Начинает CTE: временный именованный блок внутри одного запроса.
Строка 2: SELECT page_id, — Начинает запрос и перечисляет колонки или выражения, которые нужно вывести.
Строка 3: url, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 4: impressions, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 5: clicks, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 6: ctr, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 7: avg_position — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 8: FROM page_gsc_summary — Указывает основную таблицу или источник данных для запроса.
Строка 9: ), — Закрывает текущую SQL-конструкцию и завершает команду точкой с запятой.
Строка 10: ctr_risks AS ( — Дает имя промежуточному результату, который используется дальше в запросе.
Строка 11: SELECT * — Начинает запрос и перечисляет колонки или выражения, которые нужно вывести.
Строка 12: FROM page_metrics — Указывает основную таблицу или источник данных для запроса.
Строка 13: WHERE impressions >= 500 — Начинает фильтр: дальше перечисляются условия, какие строки оставить.
Строка 14: AND ctr < 0.02 — Добавляет еще одно обязательное условие к фильтру.
Строка 15: ) — Закрывает текущую SQL-конструкцию и завершает команду точкой с запятой.
Строка 16: SELECT url, — Начинает запрос и перечисляет колонки или выражения, которые нужно вывести.
Строка 17: impressions, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 18: clicks, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 19: ctr, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 20: avg_position — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 21: FROM ctr_risks — Указывает основную таблицу или источник данных для запроса.
Строка 22: ORDER BY impressions DESC; — Сортирует результат, чтобы важные строки оказались выше или ниже.

Что должно получиться

Вы увидите страницы с CTR-риском, но запрос будет легче читать.

Если появилась ошибка

Проверьте, что вы работаете в файле seo_lab_from_zero.db, скопировали блок полностью и не потеряли точку с запятой в конце SQL-команды.