|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Привет всем нужно найти дубли по определенным полям , но только если дубликат идет следующим по порядку например есть таблица в ней id num 1, 3 2, 2 3, 5 4, 2 5, 2 6, 5 7, 3 в данном случае должно вывести строку с id = 5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 12:37 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
kolyady Привет всем нужно найти дубли по определенным полям , но только если дубликат идет следующим по порядку например есть таблица в ней id num 1, 3 2, 2 3, 5 4, 2 5, 2 6, 5 7, 3 в данном случае должно вывести строку с id = 5 Если вы сами понимаете как это "если дубликат идет следующим по порядку" то объясните подробнее, желательно в терминах SQL. Вы знакомы с SQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 13:18 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Ролг Хупин, Значение в поле num равно предыдущему так понятней? На данном примере 4 и 5 id имеют одинаковое значение в поле num (2) поэтом 5-й id дублирует значение 4 -го id ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 13:44 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
В SQL нет такого слова, как "предыдущий". ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 14:03 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Сотрю пока одни "знатоки" SQL отозвались, надеюсь кто-нибудь по теме все таки ответит. "Знатоков" просьба проходить мимо. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 14:11 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
kolyady Сотрю пока одни "знатоки" SQL отозвались, надеюсь кто-нибудь по теме все таки ответит. "Знатоков" просьба проходить мимо. "Сотреть" мало Вы сами сюда пришли. Еще раз: объясните подробнее, желательно в терминах SQL. Вы знакомы с SQL ? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 14:45 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
kolyady Значение в поле num равно предыдущему так понятней? Тогда нужный вам запрос напишется практически сам собой. так понятней? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 15:27 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
kolyady, реляционные данные неупорядочены, действительно нет понятия "предыдущий". таблицы 1,2,3,4,5 и 5,3,4,1,2 полностью идентичны. 3, 5 4, 2 5, 2 и 4, 2 3, 5 5, 2 это одинаковые наборы данных. Я понимаю, что автору необходимо найти и сгруппировать все строки все строки, при условии, что количество повторяющихся значений num > 1 при условии, что ряд чисел id в группах не прерывается, при этом в результирующий набор должны попасть строки с минимальным значением id, все строки с уникальными num и группы, состоящих из одного элемента. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 15:41 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
kolyady, Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 15:59 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
kolyady, Традиционное решение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Остался вопрос, что должно быть выведено, если 2-ки будут идти подряд более 2-х раз: 4, 2 5, 2 6, 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 20:40 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Alibek B. В SQL нет такого слова, как "предыдущий". почему нет? авторПредложение LAG (Transact-SQL) Обращается к данным из предыдущей строки того же результирующего набора без использования самосоединения начиная с SQL Server 2012 (11.x). Функция LAG обеспечивает доступ к строке с заданным физическим смещением перед началом текущей строки. Используйте данную аналитическую функцию в инструкции SELECT для сравнения значений текущей строки со значениями из предыдущей . ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 20:42 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
godsql, LAG ... Выглядит как придирка к формулировке "в SQL". Да, правильно было бы написать "у отношений". SQL изначально апокрифичен. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2021, 21:50 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
godsql почему нет? То есть автор должен сказать, как определяется очерёдность записей в результирующем наборе, тогда ответить на вопрос можно. Massa52 предположил, что набор упорядочен по id, но это может быть и не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 18:47 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
godsql Alibek B. В SQL нет такого слова, как "предыдущий". почему нет? авторПредложение LAG (Transact-SQL) Обращается к данным из предыдущей строки того же результирующего набора без использования самосоединения начиная с SQL Server 2012 (11.x). Функция LAG обеспечивает доступ к строке с заданным физическим смещением перед началом текущей строки. Используйте данную аналитическую функцию в инструкции SELECT для сравнения значений текущей строки со значениями из предыдущей . "В SQL нет" ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 19:51 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
alexeyvg, 1." В цитате "того же результирующего набора". А у автора таблица ". "Мой дядя самых честных правил" спросил: "А что в заветах Кодда сказано о том?". Правило 1. (The Information Rule): Вся информация в реляционной базе данных на логическом уровне должна быть явно представлена единственным способом: значениями в таблицах. Следовательно, любой результат применения любых операций к любым таблицам должен быть представлен таблицей. Т.е. ваш "результирующий набор" является такой же таблицей, как и "автора таблица". 2." автор должен сказать, как определяется очерёдность записей в результирующем наборе " Так он в дополнение к своему вопросу пояснил ( 22387160 ): " На данном примере 4 и 5 id имеют одинаковое значение в поле num (2) поэтом 5-й id дублирует значение 4-го id ". Следовательно, без всякого предположения можно сказать, что строки "автора таблицы" ("результирующего набора") упорядочены по id. Вы не дочитали до конца это сообщение. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2021, 23:27 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Wlr-l kolyady, Традиционное решение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Остался вопрос, что должно быть выведено, если 2-ки будут идти подряд более 2-х раз: 4, 2 5, 2 6, 2 Частное решение. А в общем понятии: плохое решение. Потому что: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 09:25 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
1. Gerasimenko: " Частное решение. А в общем понятии: плохое решение. Потому что... " Нет, совсем не потому, а потому что, только наш человек сначала наведет порядок, потом сознательно нарушит этот с таким трудом наведенный порядок и будет продолжать думать, что наведенный порядок не изменился. 2. Gerasimenko, что вы фактически сделали? Вы выкололи точку 5, т.е. последовательность 4, 2 5, 2 6, 2 вы заменили на последовательность 4, 2 5, null 6, 2 Запрос должен вернуть пустой набор. Проверьте! И это правильный результат! 3. Приведенный мной запрос - это одна из реализаций LAG. 4. Пропуски в нумерации событий не критичны, так как всегда можно пересчитать нумерацию по id. Если же значение num повторяется подряд более одного раза, то LAG, возможно, не поможет, и нужно будет искать интервалы непрерывности num, длина которых больше 1, о чем несколько сумбурно сказал Владислав Колосов ( 22387187 ). 5. Не нужно думать, что ТС привел таблицу в которой хранятся реальные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 12:01 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Wlr-l 1. Gerasimenko: " Частное решение. А в общем понятии: плохое решение. Потому что... " Нет, совсем не потому, а потому что, только наш человек сначала наведет порядок, потом сознательно нарушит этот с таким трудом наведенный порядок и будет продолжать думать, что наведенный порядок не изменился. 2. Gerasimenko, что вы фактически сделали? Вы выкололи точку 5, т.е. последовательность 4, 2 5, 2 6, 2 вы заменили на последовательность 4, 2 5, null 6, 2 Запрос должен вернуть пустой набор. Проверьте! И это правильный результат! 3. Приведенный мной запрос - это одна из реализаций LAG. 4. Пропуски в нумерации событий не критичны, так как всегда можно пересчитать нумерацию по id. Если же значение num повторяется подряд более одного раза, то LAG, возможно, не поможет, и нужно будет искать интервалы непрерывности num, длина которых больше 1, о чем несколько сумбурно сказал Владислав Колосов ( 22387187 ). 5. Не нужно думать, что ТС привел таблицу в которой хранятся реальные данные. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 12:09 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Gerasimenko, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
P.S. Если прошлое значение = NULL, то оно не подпадает под условие дубля прошлой записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 12:17 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Oleg_SQL Gerasimenko, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
P.S. Если прошлое значение = NULL, то оно не подпадает под условие дубля прошлой записи. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 12:33 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
Gerasimenko, Не понимаю вопроса. Мой запрос вернет автору то, что он просит. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 12:40 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
"Идущие подряд" дубли, начиная со второго в каждой серии Код: sql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:37 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 13:53 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
alexeyvg godsql почему нет? То есть автор должен сказать, как определяется очерёдность записей в результирующем наборе, тогда ответить на вопрос можно. Massa52 предположил, что набор упорядочен по id, но это может быть и не так. а в чем проблема то? в упорядочивании? ну так поставьте стандартное LAG () OVER (order by 1/0) :) PS. что-то тема стала напоминать разговоры после 3 стакана водки :) в студенческие времена ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2021, 21:25 |
|
Найти дубль но только если он дублирует предыдущую строку
|
|||
---|---|---|---|
#18+
godsql alexeyvg пропущено... В цитате "того же результирующего набора". А у автора таблица. То есть автор должен сказать, как определяется очерёдность записей в результирующем наборе, тогда ответить на вопрос можно. Massa52 предположил, что набор упорядочен по id, но это может быть и не так. а в чем проблема то? в упорядочивании? ну так поставьте стандартное LAG () OVER (order by 1/0) :) PS. что-то тема стала напоминать разговоры после 3 стакана водки :) в студенческие времена угу, если не различать "того же результирующего набора. А у автора таблица." И сам ТС куда-то исчез ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2021, 13:35 |
|
|
start [/forum/topic.php?fid=46&msg=40106581&tid=1684165]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
131ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 249ms |
0 / 0 |