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