Вы бы спасли меня ~ 5 минут, если бы вы вставили данные в виде текста, а не в виде рисунка - поскольку я не мог скопировать-вставить и пришлось бы перепечатывать ...
Сказав это:
Перестройте таблицу здесь:
DROP TABLE IF EXISTS input;
CREATE TABLE input(id,numb1,state_coding) AS (
SELECT 202003,4718868,'D'
UNION ALL SELECT 202003, 35756,'AA'
UNION ALL SELECT 204281, 146199,'D'
UNION ALL SELECT 204281, 146199,'D'
UNION ALL SELECT 204346, 108094,'D'
UNION ALL SELECT 204346, 108094,'D'
UNION ALL SELECT 204389, 14642,'DD'
UNION ALL SELECT 204389, 96504,'F'
UNION ALL SELECT 204392, 22010,'D'
UNION ALL SELECT 204392, 8051,'G'
UNION ALL SELECT 204400, 74118,'D'
UNION ALL SELECT 204400, 103900,'D'
UNION ALL SELECT 204406,1387304,'D'
UNION ALL SELECT 204406, 0,'HJ'
UNION ALL SELECT 204516, 894,'D'
UNION ALL SELECT 204516, 3927,'D'
UNION ALL SELECT 204586, 234235,'D'
UNION ALL SELECT 204586, 234235,'D'
)
;
И затем: на основе того, что было сказано в других ответах, и с учетом того, что массовое удаление важной части таблицы не только в Vertica , лучше всего реализовать как INSERT ... SELECT с инвертированным условием WHERE - здесь идет:
CREATE TABLE input_help AS
SELECT * FROM input
GROUP BY id,numb1,state_coding
HAVING COUNT(*) = 1;
DROP TABLE input;
ALTER TABLE input_help RENAME TO input;
По крайней мере, это работает с такой простотой, если вся строка одинакова - я заметил, что вы этого не делаете Поместите state_coding в условие самостоятельно. В противном случае все становится немного сложнее.
Или вы хотите заново вставлять по одной строке дубликатов каждый потом?
Затем просто создайте input_help
как SELECT DISTINCT * FROM input;
, затем бросьте , затем переименуйте.