2016-11-29 3 views
1

У меня есть таблица, которая содержит некоторые дублированные данные, и я хочу удалить из нее определенные записи на основе значения, хранящегося в столбце «Время».Удалить конкретные повторяющиеся данные с условием

В моей таблице, ID: 504289 имеет 3 входа:

Date  Time    Place ID 
20161128 2016-11-30 12:54 East 504289 
20161128 2016-11-30 12:55 East 504289 
20161128 2016-11-30 13:10 East 504289 

Я хочу удалить только запись, где интервал времени между ним и предыдущими записями имеет разницу в 15 минут или меньше.

Прилагается к таблице выше, только запись 12:55 будет удалена, потому что 1254 является первой записью, а 13:10 - более 15 минут от нее.

Может ли кто-нибудь помочь разобраться в запросе?

+0

Пожалуйста, отметьте свой вопрос в базе данных, которую вы используете. Кроме того, каков тип данных столбца 'time'. –

+0

временной столбец varchar –

ответ

2

Используя стандартный SQL, вы можете удалить записи, которые находятся в пределах 15 минут от другой записи. Если предположить, что time столбца является каким-то дата типа/времени для используемой базы данных, то SQL будет выглядеть примерно так:

delete from t 
    where exists (select 1 
        from t t2 
        where t2.date = t.date and 
         t2.time < t.time and 
         t2.time > t.time - interval '15 minute' 
       ); 

Дата/время арифметика значительно варьируется в зависимости от базы данных. Вышеприведенная общая форма дает форму запроса.

+0

Представьте, что таблица имеет 30 строк с отметками времени на одну минуту друг от друга. От, скажем, '12: 00' до' 12: 29'. Если я правильно понял ваш запрос, он удалит 29 строк - все, кроме последнего. Это не похоже на то, что хочет OP. Для начала он хочет сохранить первую строку, а не последнюю. –

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