2016-05-10 6 views
0

У меня есть таблица в Redshift, у которой есть несколько повторяющихся строк, которые мне нужно как-то удалить. Я хочу сохранить только одну строку для каждого уровня user_id, уровня и типа. Пользователь может повышать уровень только один раз за уровень. Пример таблицы выглядит следующим образом:Нужна помощь в удалении повторяющихся строк в Amazon Redshift DB

version date  timestamp   user_id level type 
1.0.0 2016-05-10 2016-05-10 14:53:58 1234  13  levelup 
1.0.0 2016-05-10 2016-05-10 14:53:25 1234  13  levelup 
1.0.0 2016-05-10 2016-05-10 14:52:03 1234  13  levelup 
1.0.0 2016-05-10 2016-05-10 14:52:03 1234  13  levelup 
1.0.0 2016-05-10 2016-05-10 14:52:03 1234  13  levelup 

Я пытался смотреть в запросы, которые работают для других баз данных, но ничего, что бы работать с Redshift не найдены. Используя TOP или min(timestamp), я также не могу использовать LIMIT, даже если знаю, сколько существует дубликатов. Я считаю, что использование таблицы самосоединения не будет работать, так как нет ничего уникального для сравнения?

Есть ли какое-либо решение, которое не требует, чтобы я копировал все уникальные строки в новую таблицу? Благодаря!

ответ

0

Вы можете попробовать функцию row_number()?

Кроме того, вы можете создать уникальный столбец идентификатора и заполнить каждую строку этим идентификатором.

DELETE FROM tablename 
WHERE id IN (SELECT id 
       FROM (SELECT id, 
          ROW_NUMBER() OVER (partition BY user_id,level,type ORDER BY timestamp) AS rnum 
        FROM tablename) t 
       WHERE t.rnum > 1); 

http://docs.aws.amazon.com/redshift/latest/dg/r_Examples_of_WF_ROW_NUMBER_WF.html

+0

Это, казалось, вернуться все строки? Сначала я сделал SELECT, так как я устал от удаления данных, пока не уверен, что он нацелен на правильные строки. Но я вижу, что это должно быть нацелено на всех, кроме одной назначенной строки 1, однако, похоже, это не так. – eriye9

+0

Привет, я изменил запрос. Можете ли вы попробовать повторить выбор. Чтобы это сработало, вам нужно создать столбец идентификатора. Можете ли вы изменить таблицу, чтобы иметь уникальный идентификатор? –

+0

К сожалению, я не могу добавить столбец в эту таблицу. У меня нет уникальных идентификаторов, с которыми я сталкиваюсь. – eriye9

Смежные вопросы