172 похожих чатов

По дате регистрации фильтр, работает но дубликаты по original_id есть.

Где ошибка?
SELECT *
FROM members m1
JOIN members m2 ON m1.original_id < m2.original_id
WHERE m1.dt_reg <> m2.dt_reg AND ABS(EXTRACT(EPOCH FROM m1.dt_reg - m2.dt_reg)) <= 300
ORDER BY m1.dt_reg;

27 ответов

14 просмотров

Было бы скорее странно, если бы их не было — у Вас же соединение не по равенству. Сколько записей возвращает условие: SELECT * FROM members m1 JOIN members m2 ON m1.original_id < m2.original_id например? Ну и потом отфильтровываются не все "дубликаты", вот и всё.

NoName- Автор вопроса
Yaroslav Schekin
Было бы скорее странно, если бы их не было — у Вас...

Сожрало 64гб памяти пришлось убивать процес )

А где тут дубликаты то????

NoName- Автор вопроса
Konstantin Zaitsev
А где тут дубликаты то????

original_id = 10 - этого человека может быть N количество раз.

NoName
Сожрало 64гб памяти пришлось убивать процес )

Эээ... это был намёк (и мне начинает казаться, что Вы не понимаете, как работают (что значат) JOIN-ы логически). ;) И намёк был на следующее: если в таблице x, к примеру, 5 записей, сколько их будет в результате SELECT * FROM x JOIN x AS x1 ON true?

Konstantin Zaitsev
=

Жоска) нафига клеить таблицу с собой по совпадению айди?

NoName- Автор вопроса

Нужно было быстро и без боли. Но походу надо будет снова чето учить. Т_Т SELECT DISTINCT ON (original_id) * FROM members WHERE время dt_reg по сравнению с другими записями не больше 5минут ORDER BY dt_reg; Что тут нужно гуглить? join или WITH ordered_members AS, или подзапросы? куда рыть? 🙇🏻‍♂️

NoName
Нужно было быстро и без боли. Но походу надо будет...

> Но походу надо будет снова чето учить. Т_Т Лучше бы основы выучить, да (так-то можно "сдирать" идиомы без понимания смысла в любом языке, и, пока везёт, так и жить... но когда-то и не прокатит, как в этом случае). ;) Вот это: SELECT DISTINCT ON (original_id) * почти наверняка не нужно (если original_id — уникальный ключ). > Что тут нужно гуглить? EXISTS, скорее всего (я не уверен, что правильно понял задачу — лучше бы подробнее её описать).

NoName
Нужно было быстро и без боли. Но походу надо будет...

по сравнению с другими записями не больше 5минут относительно чего?

YIFF Лисонька THEN fluffy
по сравнению с другими записями не больше 5минут о...

Судя по всему записей с тем же original_id ))) lag коллеге в помощь

NoName- Автор вопроса
Yaroslav Schekin
> Но походу надо будет снова чето учить. Т_Т Луч...

Есть база клиентов с привязкой на какой-то space. original_id не является уникальным ключом. С точки зрения программирования я бы решил задачу так. 1. Запросил бы у базы только 1 экземпляр клиента. SELECT DISTINCT ON (original_id) original_id, dt_reg FROM members ORDER BY original_id; 2. Отсортировал полученное по dt_reg 3. Прошелся бы по каждой записи dt_reg и складывал бы массив с массивами.

NoName- Автор вопроса
Konstantin Zaitsev
Куда-то разница во времени пропала )

Разница во времени 5минут. enumerate бы заюзал и просто i+1 бы добавлял. Просто может SQL бы мог это сделать.

NoName
Есть база клиентов с привязкой на какой-то space. ...

With x as (Select Id, original_id, dreg, lag(dreg) over (partition by original_id order by dreg, I’d) Select from x where

NoName- Автор вопроса
Konstantin Zaitsev
With x as (Select Id, original_id, dreg, lag(dreg)...

WITH cte AS ( SELECT id, original_id, dt_reg, LAG(dt_reg) OVER (PARTITION BY original_id ORDER BY dt_reg) - dt_reg as intervals FROM members ) SELECT * FROM cte WHERE intervals IS NULL OR intervals <= INTERVAL '5 minutes'; Почему не попадает прошлый?

NoName
WITH cte AS ( SELECT id, original_id, dt_reg,...

И показывайте все а не две колонки

И надо >

Konstantin Zaitsev
И надо >

Хотя я уже запутался в вариантах запроса проверьте сами.

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта