Есть две большие проблемы
- Ваш запрос неверный.для правильной работы необходимо использовать функцию агрегации
count
с groupby на user_id
столбцах. - Вы не можете удалять записи с помощью оператора
delete
, если ваша таблица не является transactional table.
Чтобы удалить запись из нетранснациональной таблицы вам необходимоиспользуйте оператор insert overwrite
, чтобы перезаписать таблицу требуемыми записями.
Синтаксис:
Insert overwrite table select * from <table_name> where <condition>
Ваш код должен выглядеть следующим образом
INSERT overwrite TABLE rating
SELECT *
FROM rating
WHERE
user_id IN
(
SELECT user_id
FROM rating
GROUP BY(user_id)
HAVING count(user_id) > 20
);