|
Вопрос по дубликатам
|
|||
---|---|---|---|
#18+
Всем привет! Я в sql новичок и собственно получил простую, как мне сказали задачу.. Обработать справочник с 1 млн. записей: суть моей задачи в том, чтобы найти дубликаты записей и присвоить им ID оригинальной записи, то есть например: id 1 - Магазин - ул. Ленина - д. 77 - n_id id 2 - Магазин - Ленина ул. - д. 77 - n_id id 3 - Жилой дом - 1 мая - д.3 - n_id id 4 - Аптека - пр. Октября - д.9 - n_id id 5 - Магазин - улица Ленина - д. 77 - n_id id 6 - Остановка об.транспорта - ул. Московская - д.21 - n_id ... ... ... ...и так до миллиона. Собственно мы видим, что id 1, 2, 5 - являются дубликатами. Мне нужно сделать так чтобы например id 1 - оставался без n_id, а у id 2, 5 - n_id = id 1 и так у всех встречающихся дубликатов в таблице. То есть дальше таблица должна бы была выглядеть так: id - тип - улица - дом - n_id id 1 - Магазин - ул. Ленина - д. 77 - n_id id 2 - Магазин - Ленина ул. - д. 77 - n_id 1 id 3 - Жилой дом - 1 мая - д.3 - n_id id 4 - Аптека - пр. Октября - д.9 - n_id id 5 - Магазин - улица Ленина - д. 77 - n_id 1 id 6 - Остановка об.транспорта - ул. Московская - д.21 - n_id ... ... ... ...и так до миллиона. Пробовал оконными функциями, через count, но не как-то не хватает знаний в sql может, кто знает, как сделать это запросами или это только в ручную.. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2021, 11:16 |
|
Вопрос по дубликатам
|
|||
---|---|---|---|
#18+
polister67 получил простую, как мне сказали задачу.. задачи связанные с парсингом (а твой случай именно это) "ниразу" не простые вообщем, тебе нужно будет - "разбить" на слова поле "улица" - привести к единому виду все эти "ул.", "улица", "пр.", "проспект", "пер.", ... (для чего нужно будет завести справочник) - возможно, тоже и для "д.", "дом", "корпус", ... (?) - "склеить" всё в строку через STRING_AGG с сортировкой - и только после этого "браться" за "оконные функции" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2021, 12:14 |
|
Вопрос по дубликатам
|
|||
---|---|---|---|
#18+
court polister67 получил простую, как мне сказали задачу.. задачи связанные с парсингом (а твой случай именно это) "ниразу" не простые вообщем, тебе нужно будет - "разбить" на слова поле "улица" - привести к единому виду все эти "ул.", "улица", "пр.", "проспект", "пер.", ... (для чего нужно будет завести справочник) - возможно, тоже и для "д.", "дом", "корпус", ... (?) - "склеить" всё в строку через STRING_AGG с сортировкой - и только после этого "браться" за "оконные функции" :) Подскажи пожалуйста, а вот с назначением id и n_id можешь подсказать поподробнее.. Запрос на примере или может почитать, что про это. Сейчас хотелось бы понять как это можно не сделать не прибегая метода "В ручную" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2021, 13:03 |
|
Вопрос по дубликатам
|
|||
---|---|---|---|
#18+
polister67, вот, очень и очень упрощённо: - предполагается, что "разночтения" только в поле street - разделитель слов только пробел Код: 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. 36. 37. 38. 39.
idadr_typehouses1invn_id1Магазинд. 77Ленина#улица312Магазинд. 77Ленина#улица313Жилой домд.31#мая234Аптекад.9Октября#проспект145Магазинд. 77Ленина#улица316Остановка об.транспортад.21Московская#улица46 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2021, 13:46 |
|
|
start [/forum/topic.php?fid=53&fpage=16&tid=1994233]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 267ms |
total: | 386ms |
0 / 0 |