Шаг 088. Создаем таблицу keyword_cannibalization

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

Что делаем

Создаем таблицу keyword_cannibalization

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

Сохраняем потенциальную каннибализацию как отдельную витрину.

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

DROP TABLE IF EXISTS keyword_cannibalization;

CREATE TABLE keyword_cannibalization AS
SELECT query,
       COUNT(DISTINCT page_id) AS pages_count,
       GROUP_CONCAT(DISTINCT page_id) AS competing_page_ids,
       SUM(impressions) AS impressions,
       SUM(clicks) AS clicks
FROM gsc_daily
GROUP BY query
HAVING COUNT(DISTINCT page_id) > 1;

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

Строка 1: DROP TABLE IF EXISTS keyword_cannibalization; — Удаляет старую учебную таблицу с таким именем, если она уже была создана раньше.
Строка 2: пустая строка — Пустая строка отделяет один смысловой блок кода от другого, чтобы код легче читался.
Строка 3: CREATE TABLE keyword_cannibalization AS — Создает новую таблицу из результата SELECT-запроса.
Строка 4: SELECT query, — Начинает запрос и перечисляет колонки или выражения, которые нужно вывести.
Строка 5: COUNT(DISTINCT page_id) AS pages_count, — Считает количество строк или уникальных значений.
Строка 6: GROUP_CONCAT(DISTINCT page_id) AS competing_page_ids, — Продолжает текущую SQL-команду: задает колонку, выражение, условие или значение.
Строка 7: SUM(impressions) AS impressions, — Считает сумму числовых значений, например показов или кликов.
Строка 8: SUM(clicks) AS clicks — Считает сумму числовых значений, например показов или кликов.
Строка 9: FROM gsc_daily — Указывает основную таблицу или источник данных для запроса.
Строка 10: GROUP BY query — Группирует строки, чтобы можно было считать суммы, средние и количества.
Строка 11: HAVING COUNT(DISTINCT page_id) > 1; — Фильтрует уже сгруппированные результаты, например по сумме показов.

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

Появится таблица keyword_cannibalization.

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

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