Знатокам запросов

  1. 3 г. назад
    05.05.2020 15:11:38 отредактировано Fynjy

    Предположим есть табличная часть в ней 10 000 строк номенклатурных позиций с характеристикам, нужно запросом\двумя разделить таблицу на две относительно равные части. Основное условие не должно быть одной и той же позиции номенклатуры в двух выборках - должна быть только в одной.
    Как пример
    Н1 Х1
    Н1 Х2
    Н2 Х1
    Н2 Х2
    Н2 Х3
    Н3 Х1
    Н3 Х2
    Н4 Х1
    Н4 Х2
    В итоге должны получить
    Н1 Х1
    Н1 Х2
    Н2 Х1
    Н2 Х2
    Н2 Х3
    ......
    Н3 Х1
    Н3 Х2
    Н4 Х1
    Н4 Х2
    Важное условие что бы деление было пропорциональное и не допускать перекосов.
    Пример
    Н1 Х1
    Н2 Х1
    Н2 Х2
    Н2 Х3
    Н2 Х5
    Н2 Х6
    Н3 Х1
    Н3 Х2
    Н4 Х1
    Н4 Х2
    Должно быть разделено как
    Н2 Х1
    Н2 Х2
    Н2 Х3
    Н2 Х5
    Н2 Х6
    ....
    Н1 Х1
    Н3 Х1
    Н3 Х2
    Н4 Х1
    Н4 Х2
    Как то так. Есть любители таких задач?

    Ответы: (5)
  2. есть так-то. на мисте [...] чо было

  3. ты формулируешь как-то плохо. можешь сформулировать попроще

  4. У меня есть пару идей, но Антон всё равно меня не читает...

  5. Думаю, про.бал уже Фундж свое собеседование

    Ответы: (12)
  6. (0) Думаю проще всего, нужно запросом сгруппировать по количеству позиций с одинаковой номенклатурой, и отсортировать эти группы по количеству позиций в порядке убывания.
    Потом брать группы с самым большим количеством, и раскидывать их по двум частям, туда где меньше.

    Если делать по более сложному варианту, то наверное одним запросом не отделаешься.

    Ответы: (6)
  7. 05.05.2020 16:33:42 отредактировано КитайскийМуй

    webdev Потом брать группы с самым большим количеством, и раскидывать их по двум частям

    Вот это как раз и запрещено делать.

    Основное условие не должно быть одной и той же позиции номенклатуры в двух выборках - должна быть только в одной.

    Ответы: (7)
  8. КитайскийМуй Вот это как раз и запрещено делать.

    Ты не понял. Их кидаем целиком, не разбивая.

    Ответы: (8) (9)
  9. 05.05.2020 16:43:57 отредактировано КитайскийМуй

    (7) Да, так можно. Только сложности будут с пропорциональностью.

    Важное условие что бы деление было пропорциональное и не допускать перекосов.

    Ответы: (9)
  10. КитайскийМуй (7) Да, так можно. Только сложности будут с пропорциональностью.

    Ну перекосы тут возможны небольшие, но зато вычислительные затраты низкие.
    Можно решить более сложным способом, он может дать небольшой выигрыш по перекосам, но затраты на много выше, и 100% гарантии от перекосов нет.

  11. Номенклатуру, чётные, нечетные ... думаю будет примерно одинаково.

  12. в любом случае надо к профайлеру обращаться. там сразу понятно. где жопа

  13. (4) не девочка долбоеб [...] задачу я сделал. Хоть и не запросом, хотя уверен, что есть такая возможность.
    И это не собеседование.
    Есть манагеры им приходят прайсы поставщиков по 10-15 тысяч строк нужно между ними распределить строки.
    Сейчас это сделано так:
    Группируем номенклатуру по количеству различных.
    Дальше разбиваем по алгоритму рюкзака по нужному количеству таблиц
    Потом отдаем манагерам равные объемы.
    .
    Мне кажется что это не оптимально - манагеров в целом устраивает время распределения.

    Ответы: (13)
  14. (12) ИМХО не уровне запросов распилить на примерно равные выборки невозможно в принципе. Декларативный язык однако.

    Непонятно, нафига манагерам прайсы поставщиков раздавать? Чтобы они втупую сравнивали? Задачу сравнения цен надо автоматизировать, манагерам передавать не прайсы, а готовые диффы цен.

  15. (14) для сопоставления номенклатуры. Потому что там реально ад. То что можно сопоставить - сопоставляется. Но новый прайс без бабы робота ни как. Лекарства.

    Ответы: (15)
  16. (14) Номенклатура поставщиков сопоставляется отдельно от сравнения цен. Один раз на позицию. Потом используя сопоставления автоматом делаются диффы. Намного проще выйдет.

    Ответы: (17)
  17. Вдогонку. Как на фарме маркировка внедряется?

    Ответы: (17)
  18. (15) так оно раз и делается. Но приходит прайс от завода и порой народ охеревает. Была Ацетилсалициловая 200мг с кодом 256256 и внезапно заходит от завода Парацетамол 200 мг с кодом 256256 - кода одинаоквые а позиция по прайсу разные. Я не знаю как происходит но довольно часто такое. А сама задача под нового поставщика\производителя. Тут порой офигиваешь - одна и та же позициия одного и того производителся с одним и тем же сроком и серией у разных поставщиков - отличается очень значительно.
    Поэтому есть 1 манагер для всего и приходят на помощь 2-3 если заходит новый прайс что бы один раз синхронизировать номенклатуру.
    (16) нормально у них сильно переписанная УТ11 с сильно старым релизом заюзали УАС как промежуточную - выгружаются данные из рабочей и из рабочей улетают на сайт через COM вся работа. Единственное через COM с ключами немного по.бся. Договорились что возврат в продажу будут делать в УАС вручную. А так сильно бизнес процессы не поменялись. Но все пока в тестовой эксплуатации в песочнице - половина производителей и поставщиков даже не задумывалась DataMatrix не соответствуют закону.

    Ответы: (18) (19)
  19. (17) жжошь, как же можно спутать салициловый эфир уксусной кислоты и ацетаминофен.

  20. (17)

    DataMatrix не соответствуют закону

    В чем там засада?

    ЗЫ. Внедрял маркировку у шмотчиков. Внезапно оказалось, что хотя сам код DM 200 символов, но в ЧЗ надо отправлять только 32 первых. Фалломорфировал от такой простоты.

    Ответы: (20)
  21. (19) в законе есть четкая структура DataMatrix, а заводы пока не меняют ее под закон - поэтому пока некоторые производители дают упаковки не соответствующие (не распознаваемые) как легитимный. Многие из них обещают с 1 июня, потому что с 1 июля ж финал - мои хотят с 1 июня выйти из песочницы - уже все вносить в систему.

    Ответы: (21)
  22. 07.05.2020 16:34:07 отредактировано Aistovich

    (20) ацетон знаешь как с помощью песка делают?

или зарегистрируйтесь чтобы ответить!