powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Удаление дублей
7 сообщений из 7, страница 1 из 1
Удаление дублей
    #40027583
Const123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Имеется следующая выборка из таблицы test1 с полями Field1 типа TEXT и Field2 типа REAL :
2020-12-01 01:54:40.1120001521.7318122020-12-01 01:54:41.1120001521.7318122020-12-01 01:54:42.1120001521.7318122020-12-01 01:54:43.1120001521.6955572020-12-01 01:54:44.1120001521.6955572020-12-01 01:54:45.1120001521.7318122020-12-01 01:54:46.1120001521.6955572020-12-01 01:54:47.1120001521.6955572020-12-01 01:55:18.1120001521.6232912020-12-01 01:55:19.1120001521.6955572020-12-01 01:55:49.1120001521.695557


Нужно получить такой результат:
2020-12-01 01:54:40.1120001521.7318122020-12-01 01:54:43.1120001521.6955572020-12-01 01:54:45.1120001521.7318122020-12-01 01:54:46.1120001521.6955572020-12-01 01:55:18.1120001521.6232912020-12-01 01:55:19.1120001521.695557

Запрос SELECT MIN(Field1), Field2 FROM test1 GROUP BY Field2 HAVING COUNT(*)>1 выдает
2020-12-01 01:54:40.1120001521.7318122020-12-01 01:54:43.1120001521.6955572020-12-01 01:55:18.1120001521.623291

Согласно нему просто оставляются уникальные значения по полю Field2.
Мне же надо просто проредить выборку, оставив лишь первые значения, каждый раз, когда поле Field2 перестает меняться.
Как исключить такие дубликаты по полю Field2?
Заранее спасибо.
...
Рейтинг: 0 / 0
Удаление дублей
    #40027766
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HAVING убери
...
Рейтинг: 0 / 0
Удаление дублей
    #40027777
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl
HAVING убери

Не поможет, ТС хочет
Const123
Мне же надо просто проредить выборку, оставив лишь первые значения, каждый раз, когда поле Field2 перестает меняться.
Как исключить такие дубликаты по полю Field2?
Заранее спасибо.

Я бы прорежал перед вставкой в БД, или после читать в нужной сортировке и лишнее удалять. Стандартными средствами это не лечится.
...
Рейтинг: 0 / 0
Удаление дублей
    #40027994
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Const123,

Какая у вас версия SQLite ?
...
Рейтинг: 0 / 0
Удаление дублей
    #40028037
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Const123,

Если версия сервера позволяет, то можно попробовать такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
--
-- Тестовый набор данных:
with 
  test1 (field1, field2) as 
    (
      select '2020-12-01 01:54:40.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:41.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:42.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:43.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:54:44.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:54:45.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:46.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:54:47.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:55:18.112000' as field1, 1521.623291 as field2 union all
      select '2020-12-01 01:55:19.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:55:49.112000' as field1, 1521.695557 as field2 
    )
--
-- Основной запрос:
select v.field1, v.field2
  from (
         select t.field1, t.field2
              , case lag(field2) over(order by field1) 
                  when field2 then 0
                  else 1
                end as start_of_group
           from test1 as t
       ) as v
 where v.start_of_group = 1;

on-line проверка на dbfiddle
...
Рейтинг: 0 / 0
Удаление дублей
    #40028057
Бабичев Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для древних версий можно попробовать такой запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
--
-- Тестовый набор данных:
with 
  test1 (field1, field2) as 
    (
      select '2020-12-01 01:54:40.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:41.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:42.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:43.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:54:44.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:54:45.112000' as field1, 1521.731812 as field2 union all
      select '2020-12-01 01:54:46.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:54:47.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:55:18.112000' as field1, 1521.623291 as field2 union all
      select '2020-12-01 01:55:19.112000' as field1, 1521.695557 as field2 union all
      select '2020-12-01 01:55:49.112000' as field1, 1521.695557 as field2 
    )
--
-- Основной запрос:
select v.field1, v.field2
  from (
         select t0.field1, t0.field2
              , (
                  select t1.field2
                    from test1 as t1
                   where t1.field1 < t0.field1
                   order by t1.field1 desc
                   limit 1
                ) as pev_field2
           from test1 as t0
       ) as v
 where case v.pev_field2
         when v.field2 then 0
         else 1
       end = 1

on-line проверка на dbfiddle
...
Рейтинг: 0 / 0
Удаление дублей
    #40028446
Const123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Бабичев Сергей, спасибо огромное, у меня SQLite v3, но принимается только запрос для более древних.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Удаление дублей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]