SQL фильтрация дубликатов

102
06 марта 2021, 09:10

Вопрос заключается в следующем : Есть база данных postgre, в ней есть таблица вот такого вида Из за сбоя в службе которая собирает статистику , я получил дублирование записей, выглядит это примерно вот так :

Время (timestamp'ы) и сupid остаются прежними ,а кол-во деталей уменьшается

Суть в том ,что мне нужно составить запрос ,который бы подчистил бы базу ,удалив дубликаты вместе с сведениями о деталях произведенных работником за эту смену.

т.е ,удалять надо вот такими блоками :

стандартный group by ,которым заполнен интернет , тут не работает

поэтому буду благодарен за любую помощь.

P.S Деталей не обязательно 3 , может быть выпущено только одно наименование за смену. Дублирующие записи не расположены по порядку ,а хаотично раскиданы по таблице. размер таблицы примерно 4000 записей

Answer 1

Что-то типа такого:

DELETE FROM your_table AS t1
 USING your table AS t2
 WHERE t1.oper = t2.oper
   AND t1.cupid = t2.cupid
   AND t1.timestamp = t2.timestamp
   AND t1.detailname = t2.detailname
   AND t1.opensessiontimestmp = t2.opensessiontimestmp
   AND t1.id > t2.id

Условия уникальности подставьте свои.

READ ALSO
Есть ли альтернатива питоновского типа enumerate в php?

Есть ли альтернатива питоновского типа enumerate в php?

В PHP новичок от слова совсем, появилась задача написать генератор случайных чисел с идентификаторами, в питоне например про такой тип, как...

117
PHP universal delete file

PHP universal delete file

Какие могут быть недостатки у кода ниже ?

87
Как обработать Javascript-объект (невалидный JSON) в PHP?

Как обработать Javascript-объект (невалидный JSON) в PHP?

Возникла проблема - API отдаёт данные в JSON формате, примерно в таком виде:

86