Удалить строки из таблицы с несколькими пользовательскими записями - PullRequest
0 голосов
/ 14 июля 2020

Наличие этой таблицы:

 id    |    lat     |    lon     | timestamp  
---------+------------+------------+------------
 5590761 | 41.0106651 | -8.4618407 | 1491071642
 5590761 | 41.0088282 | -8.4613129 | 1491071670
 5590761 | 41.0081011 | -8.4626845 | 1491071763
 5590761 |  41.008415 | -8.4621233 | 1491071767
 5590761 | 41.0084717 |   -8.46211 | 1491071768
 5590761 |  41.008525 | -8.4620333 | 1491071769
 5590761 |   41.00859 | -8.4619783 | 1491071770
 5590761 |  41.008635 |  -8.461875 | 1491071771
 5590761 | 41.0087083 | -8.4616717 | 149107177

Некоторые записи имеют несколько экземпляров. Я хочу удалить все записи, в которых число уникальных id меньше 10.

1 Ответ

2 голосов
/ 14 июля 2020

Вы можете использовать подзапрос в delete:

delete from t
    where t.id in (select t2.id
                   from t t2
                   group by t2.id
                   having count(*) < 10
                  );

Если вы хотите удалить только строки в запросе select, вы можете использовать оконные функции:

select t.*
from (select t.*, count(*) over (partition by id) as cnt
      from t
     ) t
where cnt < 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...