Блог
Строительство и ремонт
Репетиторы
Красота
Фрилансеры
Разные специалисты
Уход за животными
Тренеры
Автоинструкторы

SQL — удалённая работа в Москве

Дата: 2025-05-10
Детали
Регион
Москва
Занятость
дистанционно
Стоимость
договорная
Дата публикации
2025-05-10
Описание
алгоритм распределения. Бизнес-задача: распределить взаимную проверку студентами заданий. Все на SQL. На Supabase будет выполняться (есть особенности). На вход функции: sprint_strapi_document_id (идентификатор учебной недели) Ожидаемый результат: По 3 заданиям, привязанным к учебной неделе проведены распределения студентов с соблюдением ряда условий. Подробнее: ЧТО ДЕЛАЕТ ГЕНЕРАТОР (ПРИМЕРНО) 1. Старт Получает идентификатор спринта и режим работы («затереть всё» или «дописать недостающее»). Спринт = учебная неделя. 2. Очистка (по желанию) Если запрошен «затереть всё» — удаляет из результата всё, что относится к этому спринту, и фиксирует, сколько строк исчезло. 3. Снимок входных данных Собирает четыре набора сведений, без хранения в БД: 1. перечень дуэлей (2 пользователя делают одну задачу) спринта и их тип (тренировочная / боевые); 2. список разрешённых участников (не уволены, из нужного потока); 3. для каждой сыгранной пары — самые свежие ответы обоих игроков — у каждого ответа есть pair_id; 4. из предыдущего пункта формирует сами пары: «идентификатор пары + оба игрока». 4. Рассчитывает квоты Для каждого допущенного пользователя считает: сколько он сыграл ответов × 3 — столько он обязан проверить. У кого получилось 0 — тот сразу «вне игры» (ему нечего проверять, он никому не нужен). 5. Готовит «кольца» – два воображаемых циклических списка Первое кольцо: шесть «слотов» подряд для каждого будущего рецензента. Второе кольцо: шесть «слотов» подряд для каждой пары, которую надо проверять. 6. Базовый round-robin 1. Для тренировочных дуэлей всем парам заранее выбирает «сдвиг» — на сколько позиций провернуть кольцо рецензентов. Для боевых дуэлей сдвиг 0. 2. «Накладывает» кольцо рецензентов на кольцо пар с учётом сдвига и тем самым назначает первых шесть рецензентов каждой паре, игнорируя случаи «рецензент = игрок пары». Получается черновой чертёж назначений. 3. Из квоты каждого назначенного рецензента вычитает израсходованные слоты. 7. Дозакрывает пары, где оказалось меньше 6 рецензентов Пока остаются «дыры»: • выбирает кандидатов с ещё не обнулённым лимитом, которых нет в данной паре и которые не столкнутся с ограничениями; • назначает их, строго не превышая «осталось проверить» ни у пары, ни у кандидата; • обновляет, сколько ещё нужно и какие квоты остались. 8. Сохраняет результат Каждое назначение дублирует на обе записи пары (чтобы вышло ровно 12 строк на пару: 6 рецензентов × 2 игрока). Старые строки не дублируются — если они уже существуют, пропускает. 9. Проверяет себя Есть две жёсткие проверки — если хотя бы одна не пройдена, всё откатывается и бросается исключение: 1. у каждой пары должно быть ровно 6 назначений, иначе фиксируется список «неполных» пар (попадают в лог) и генератор падает; 2. ни у одного рецензента фактическое число назначений не может превышать рассчитанную квоту; нарушители фиксируются в отдельный список и тоже приводят к падению. 10. Формирует отчёт Возвращает JSON: • уникальный идентификатор запуска; • статус «OK» или «ERROR»; • массив шагов-сообщений в хронологическом порядке: сколько строк стерто, сколько сохранено, попали ли пары в «неполные», есть ли «перебранные» квоты, прошла ли финальная валидация. Полный набор логических «баз»,-которыми оперирует генератор (ниже — только смысловая структура: названия полей и связь с алгоритмом; никаких SQL-таблиц или DDL-врезок) 1. Пользователи • user_id – внутренний идентификатор участника • stream_id – учебный поток (курс) • team_id – команда внутри потока • dismissed_at – дата отчисления / увольнения или пусто Зачем нужно → позволяет • убрать выбывших, • узнать команду игрока для правил FULL-CONTACT, • связать участника с потоком спринта. 2. Страйки • user_id – кто получил штраф • sprint_id – за какой спринт штраф Зачем нужно → если есть запись по текущему спринту, пользователь не допускается к проверкам. 3. Потоки и Спринты • stream_id ↔ sprint_id – один поток может иметь несколько спринтов Зачем нужно → определить, каких пользователей считать «своими» для данного спринта. 4. Команды • team_id – идентификатор команды • stream_id – чей поток Зачем нужно → различать «свою» и «чужую» команду в боевых дуэлях. 5. Дуэли • duel_id – внутренняя ссылка в ответах • sprint_id – к какому спринту относится • type – TRAINING или FULL-CONTACT Зачем нужно → отфильтровать дуэли спринта и понять, нужны ли правила баланса команд. 6. Ответы на дуэли • pair_id – уникальный идентификатор пары игроков • user_id – автор конкретного ответа • rival_id – соперник автора • duel_id – какая дуэль • hash – общий «ключ партии» (одинаков у двух строк пары) • created_at – когда отправлен ответ Зачем нужно → • брать самый свежий ответ каждого игрока в паре, • посчитать, сколько ответов сыграл каждый пользователь → сколько рецензий он обязан выдать (квота = 3 × ответы), • сформировать список всех пар «hash + duel». 7. Назначения на проверку (целевая таблица) • reviewer_id – кто будет проверять • duel_id – дуэль пары • user_id – чей ответ проверяется • hash – «ключ партии» (чтобы различать пары) Зачем нужно → конечный результат работы генератора; строка уникальна в сочетании (reviewer_id, hash, duel_id). 8. Внутренние счётчики-выкладки генератора. Что нужно ещё: поддержка и сопровождение, разработать документацию. Если сработаемся — есть много задач на стэке Supabase/Bubble/N8N.
Похожие заказы
SQL
дистанционно
договорная
Sql помощь срочно. Практическое задание: Для каждой создаваемой таблицы: 1) Определить типы данных для полей; 2) Определить первичный ключ и внешний ключ (при наличии); 3) Определить обязательные поля; 4) Заполнить таблицы (минимум 3 таблицы) (5 наименований) 5) Сделать 3 любых запроса 6) Построить схему данных. Предметные области: Библиотека и Зоопарк. Что нужно ещё: Нет. Пожелания и особенности: Практическое задание: Для каждой создаваемой таблицы: 1) Определить типы данных для полей; 2) Определить первичный ключ и внешний ключ (при наличии); 3) Определить обязательные поля; 4) Заполнить таблицы (минимум 3 таблицы) (5 наименований) 5) Сделать 3 любых запроса 6) Построить схему данных. Предметные области: Библиотека и Зоопарк.
Москва
Фрилансеры
2025-06-30
Откликнуться
Администраторы баз данных
дистанционно
договорная
Доработать существующую базу данных. СУБД: SQL. Rkeeper + StoreHouse При создании документов расхода по безналу выпадает ошибка. Началось все после перехода на чек намерения. Официалы молчат две недели. Сказали что надо в базе поправить несколько строк и пропали с радаров. Что нужно ещё: интегрировать базу данных с другими системами.
Екатеринбург
Фрилансеры
2025-06-23
Откликнуться
SQL
дистанционно
договорная
Разработать базу данных с нуля. Необходимо реализовать схему базы данных по заданию по ссылке - https://docs.google.com/document/d/1Gg43HL6zDhU2eNw9vEPMmBb0XPSFmG5j8ef9Y3lew6Q/edit?tab=t.0. Что нужно ещё: разработать документацию.
Москва
Фрилансеры
2025-06-23
Откликнуться
SQL
дистанционно
договорная
Решить две простые задачи с демонстрацией работы в базе. Задача 1. Написать запрос на SQL. Есть таблица А, состоящая из полей: дата, код валюты, курс к рублю. Таблица B: дата, код валюты, остаток в валюте счета, признак кредит/депозит, номер договора. Необходимо рассчитать (вывести одной суммой) остаток кредитного портфеля в рублевом эквиваленте за 31.12.2015. Задача 2. 1. Таблица A с историей изменения лимитов по картам. Структура: номер карты, дата, лимит. 2. Таблица B. Структура: номер карты, дата перевыпуска карты (номер карты уникален). Вывести для номеров карт из таблицы B сумму лимита на дату перевыпуска. Что нужно ещё: поддержка и сопровождение.
Москва
Фрилансеры
2025-06-21
Откликнуться
SQL
дистанционно
договорная
Разработать базу данных с нуля. Необходимо выполнить задание на курсе Нетологии по нормализации таблицы.
Москва
Фрилансеры
2025-06-21
Откликнуться
SQL
дистанционно
договорная
Доработать существующую базу данных. День добрый! Есть база данных на SQL на сервере reg.ru, работала до позавчерашнего дня, но то ли права были урезаны, то ли что-то на сервере изменилось, не запускается. В панели SSMS я ее вижу, но базы самой нет, вытащить из бэкапа не удается, выдает ошибки. В идеале - вытащить оттуда бэкап или экспортировать базу. Если не получится - разместить пустую на нашем сервере, там тоже есть проблема - к базе подключение есть, но пользователь пустой, поэтому вход не происходит. Вот такая задачка. Что нужно ещё: экспорт.
Москва
Фрилансеры
2025-06-19
Откликнуться
SQL
дистанционно
договорная
Доработать существующую базу данных. Сделать запросы 10 обычных ( Select from), 15 средних (Where, Like…) и сложные 10 штук () и описать их объяснение.
Москва
Фрилансеры
2025-06-19
Откликнуться