powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск каких либо пересечений
11 сообщений из 11, страница 1 из 1
Поиск каких либо пересечений
    #38335914
amazona
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Предположим есть такая таблица (трудовая книжка) со столбцами
id_personal, date_begin, date_end, org_name

68909209 21.03.1987 30.06.1987 Главное финансовое управление Мособлисполкома
68909209 09.12.1982 20.03.1987 Финансовое управление Мособлисполкома
68909209 25.11.1981 08.12.1982 Финансовый отдел Мособлисполкома
68909209 01.06.1981 24.11.1981 Шатурский Горфинотдел
68909209 15.08.1978 04.06.1979 Шатурский районный узел связи

68909351 21.03.1987 03.11.1993 Главное финансовое управление Мособлисполкома
68909351 09.12.1982 20.03.1987 Финансовое управление Мособлисполкома
68909351 01.03.1979 08.12.1982 Финансовый отдел Мособлисполкома
68909351 01.10.1974 28.02.1979 Финансовый отдел Мособлисполкома
68909351 28.08.1972 30.09.1974 Финансовый отдел Мособлисполкома

В итоговую таблицу должны попать следующие строчки
68909209 25.11.1981 08.12.1982 Финансовый отдел Мособлисполкома
68909351 01.03.1979 08.12.1982 Финансовый отдел Мособлисполкома

Попадают они потому, что у них есть какой то период (в данном случае 25.11.1981 - 08.12.1982) который содержится в обоих исходных периодах и + наименование организации - одно и то же. То есть другими словами, найти людей, которые когда то раньше вместе работали.

Исходная таблица очень большая! То есть брать каждую дату и сверять ее с оставшимися - не подойдет.

Подскажите пожалуйста алгоритм.
Заранее спасибо :)
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38336044
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько мыслей.

Первое что приходит в голову - побить задачу на части и решить ее
отдельно для каждого ведомства. Второе - посчитать max, min
для кадждой группы и побить его на под-отрезки (2,4,8)
но только так чтоб граница не резала интервалы трудовых книжек.
И тоже решить отдельно. В конце - слить результаты в общий отчёт.

Если отрезки - кратные дням то можно как-то соптимизировать биткартой
операции поиска пересечений.

Вообще на SQL как мне кажется эта задача решается неэффективно.
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38336102
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amazona,

Вопрос элементарный для правильного форума. Обратись в SQL Server форум
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337010
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCcamazona,

Вопрос элементарный для правильного форума. Обратись в SQL Server форум
При чём здесь вообще форум по MS-SQL-сервер? А в других DBMS эта задача принципиально
не решается? Или решается неэффективно?
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337211
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Выбери DVMS по своему усмотрению. В чем проблема-то? Аллергия на MS SQL? Посмотри топики ТС для начала.
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337218
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел на топики ТС. Какие можно сделать из них выводы? Их всего два.
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337226
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

И какой там второй форум с 9 вопросами?
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337234
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
amazonaДобрый день!
Предположим есть такая таблица (трудовая книжка) со столбцами
id_personal, date_begin, date_end, org_name

68909209 21.03.1987 30.06.1987 Главное финансовое управление Мособлисполкома
68909209 09.12.1982 20.03.1987 Финансовое управление Мособлисполкома
68909209 25.11.1981 08.12.1982 Финансовый отдел Мособлисполкома
68909209 01.06.1981 24.11.1981 Шатурский Горфинотдел
68909209 15.08.1978 04.06.1979 Шатурский районный узел связи

68909351 21.03.1987 03.11.1993 Главное финансовое управление Мособлисполкома
68909351 09.12.1982 20.03.1987 Финансовое управление Мособлисполкома
68909351 01.03.1979 08.12.1982 Финансовый отдел Мособлисполкома
68909351 01.10.1974 28.02.1979 Финансовый отдел Мособлисполкома
68909351 28.08.1972 30.09.1974 Финансовый отдел Мособлисполкома

В итоговую таблицу должны попать следующие строчки
68909209 25.11.1981 08.12.1982 Финансовый отдел Мособлисполкома
68909351 01.03.1979 08.12.1982 Финансовый отдел Мособлисполкома


Попадают они потому, что у них есть какой то период (в данном случае 25.11.1981 - 08.12.1982) который содержится в обоих исходных периодах и + наименование организации - одно и то же. То есть другими словами, найти людей, которые когда то раньше вместе работали.

Исходная таблица очень большая! То есть брать каждую дату и сверять ее с оставшимися - не подойдет.

Подскажите пожалуйста алгоритм.
Заранее спасибо :)Очень большая - это сколько? Все равно придется сравнивать...
Я бы для начала соединил таблицу саму с собой и написал условия:
Код: sql
1.
2.
3.
4.
5.
select *
  from mytable t1,
       mytable t2
 where t1.id_personal <> t2.id_personal
   and t1.org_name = t2.org_name

Ну и еще сравнение дат написать. А потом можно проанализировать распределение данных в исходных таблицах и попробовать индексов добавить.
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337242
rockclimber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за организация? Я тут нагуглил, что в РЖД работает миллион человек. Все чиновники, армия и полиция - еще по миллиону. Остальные организации существенно меньше, чего там сложного-то?
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337353
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OoCc, предлагаю свернуть оффтоп. Мы обсуждаем личности а не тему вопроса.
...
Рейтинг: 0 / 0
Поиск каких либо пересечений
    #38337716
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id_personal date_begin date_end org_name68909209 21.03.1987 30.06.1987 Главное финансовое управление Мособлисполкома68909209 09.12.1982 20.03.1987 Финансовое управление Мособлисполкома68909209 25.11.1981 08.12.1982 Финансовый отдел Мособлисполкома68909209 01.06.1981 24.11.1981 Шатурский Горфинотдел68909209 15.08.1978 04.06.1979 Шатурский районный узел связи68909351 21.03.1987 03.11.1993 Главное финансовое управление Мособлисполкома68909351 09.12.1982 20.03.1987 Финансовое управление Мособлисполкома68909351 01.03.1979 08.12.1982 Финансовый отдел Мособлисполкома68909351 01.10.1974 28.02.1979 Финансовый отдел Мособлисполкома68909351 28.08.1972 30.09.1974 Финансовый отдел МособлисполкомаВ итоговую таблицу должны попать следующие строчки 68909209 25.11.1981 08.12.1982 Финансовый отдел Мособлисполкома68909351 01.03.1979 08.12.1982 Финансовый отдел Мособлисполкома

у меня же получактся другое

68909209 68909351 Главное финансовое управление Мособлисполкома 21.03.1987- 30.06.1987 21.03.1987- 03.11.1993 Финансовое управление Мособлисполкома 09.12.1982- 20.03.1987 09.12.1982- 20.03.1987 Финансовый отдел Мособлисполкома 25.11.1981- 08.12.1982 01.03.1979- 08.12.1982
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск каких либо пересечений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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