sql.moscowЗапросы · отчёты · миграция
SQL.MOSCOW / РАЗРАБОТКА И ОПТИМИЗАЦИЯPostgreSQL · Greenplum · Oracle

Сложный SQL.
Понятный результат.

Помощь с SQL-запросами, ошибками, отчётами, выгрузками, PostgreSQL, Greenplum, Oracle PL/SQL и миграцией SQL-логики между СУБД.

query.sqlПример запроса
SELECT department,
       COUNT(*) AS total
FROM requests
WHERE created_at >=
      CURRENT_DATE - INTERVAL '30 days'
GROUP BY department;
Иллюстративный пример · без реальных данных
Перед началом работы

Начинаем с задачи и воспроизводимого примера.

Пришлите запрос, текст ошибки, версию СУБД и обезличенный пример. Пароли, ключи доступа и реальные персональные данные не нужны.

Как направить задачу ↗
Услуги

Что можно заказать

услуга

Исправление SQL-запросов

Ошибки синтаксиса, типов, JOIN, GROUP BY, CTE, оконных функций, дубли строк, неверные суммы и пустой результат.

от 5 000 ₽
услуга

Оптимизация запросов

Анализ медленных выборок, переписывание JOIN и подзапросов, рекомендации по индексам и плану выполнения.

от 15 000 ₽
услуга

PostgreSQL / Greenplum

PL/pgSQL, функции, временные таблицы, аналитические запросы, Greenplum-специфика, ошибки типов и структуры результата.

от 15 000 ₽
услуга

Oracle PL/SQL → PostgreSQL

Перевод SQL-логики, функций и процедур: DECODE, NVL, даты, MERGE, курсоры, пакеты, PL/pgSQL.

от 25 000 ₽
услуга

Отчёты и выгрузки

SQL-запросы для Excel, BI, CRM, ERP, продаж, остатков, клиентов, платежей, документов и сверки данных.

от 10 000 ₽
услуга

Аудит SQL-кода

Разбор чужого SQL, поиск ошибок, упрощение логики, комментарии, документирование и переписывание запроса.

от 20 000 ₽
Ошибки SQL

Исправление запросов и разбор ошибок

Можно прислать текст запроса, ошибку, описание таблиц и ожидаемый результат. Доступ к базе не всегда обязателен.

  • relation does not exist
    Проверка схем, имён таблиц, регистра, search_path и контекста выполнения.
  • column does not exist
    Проверка алиасов, JOIN, CTE, вложенных запросов и области видимости.
  • structure of query does not match
    Исправление возвращаемых типов и порядка столбцов в функциях PostgreSQL.
  • syntax error at or near
    Поиск синтаксических ошибок, несовместимости СУБД и неверных конструкций.
  • дубли и неверные суммы
    Проверка JOIN, группировок, агрегаций и детализации данных.
  • медленный запрос
    Анализ логики, лишних подзапросов, фильтров, индексов и плана выполнения.
Миграция

Oracle PL/SQL → PostgreSQL / Greenplum

Перенос SQL-логики требует не механической замены слов, а адаптации функций, типов, дат, процедурной логики и поведения СУБД.

Часто в Oracle

  • DECODE
  • NVL
  • MERGE
  • CONNECT BY
  • пакеты PL/SQL
  • курсорная логика

Адаптация

  • CASE
  • COALESCE
  • INSERT ON CONFLICT / отдельная логика
  • WITH RECURSIVE
  • функции PL/pgSQL
  • set-based подход
Greenplum: при переносе важно учитывать распределение данных, ограничения по UPDATE/DELETE, временные таблицы, функции и особенности MPP-архитектуры.
Отчёты

SQL-выгрузки для аналитики и бизнеса

Подготовка запросов для выгрузки данных по продажам, клиентам, остаткам, платежам, документам, товарам, группам, периодам и статусам.

  • Excel / CSV
    Запрос под нужную структуру выгрузки.
  • Power BI / BI
    Подготовка датасетов и аналитических витрин.
  • CRM / ERP
    Выборки по клиентам, документам, сделкам, платежам.
  • Сверка данных
    Поиск дублей, расхождений, пропусков и ошибок агрегации.
Стоимость

Цены на SQL-задачи

Первичный разбор задачиот 3 000 ₽
Исправление простого SQL-запросаот 5 000 ₽
Разработка SQL-выгрузкиот 10 000 ₽
Оптимизация медленного запросаот 15 000 ₽
PL/pgSQL функцияот 20 000 ₽
Миграция Oracle PL/SQL → PostgreSQLот 25 000 ₽
Аудит SQL-кодаот 20 000 ₽
Срочная задачаиндивидуально

Итоговая стоимость зависит от СУБД, объёма кода, доступности схемы таблиц, срочности, необходимости тестирования и сложности бизнес-логики.

Как проходит работа

Порядок выполнения

1. Вы присылаете задачу

Запрос, ошибку, СУБД, структуру таблиц, ожидаемый результат и ограничения.

2. Уточняется логика

Какие данные нужны, как считается результат, где возникает ошибка или замедление.

3. Готовится решение

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

FAQ

Частые вопросы

Можно ли помочь без доступа к базе?

Да, для предварительного разбора часто достаточно текста запроса, ошибки, структуры таблиц и ожидаемого результата. Для оптимизации желательно иметь план выполнения и пример объёмов данных.

Можно ли переписать Oracle SQL под PostgreSQL?

Да. Нужно учитывать различия функций, типов данных, дат, процедурной логики и синтаксиса. Иногда требуется не прямая замена, а изменение подхода.

Можно ли ускорить запрос?

Да, если есть текст запроса, структура таблиц, пример объёмов и желательно EXPLAIN / EXPLAIN ANALYZE. Можно также дать рекомендации по индексам и переписыванию логики.

Можно ли сделать выгрузку для Excel или BI?

Да. Можно подготовить SQL-запрос под нужные поля, фильтры, группировки, периоды и формат результата.

Как проверить исправленный запрос и сравнить производительность

Перед изменением SQL полезно зафиксировать, какой результат считается правильным: состав столбцов, правила отбора, уровень детализации, допустимые повторы и способ расчёта сумм. Контрольный пример включает небольшую схему, обезличенные записи и ожидаемый ответ. Такой комплект помогает отделить синтаксическую ошибку от неверного понимания отчёта.

Проверка оптимизации состоит из двух частей. Сначала сравниваются результаты исходного и изменённого запроса: количество строк, ключи, контрольные суммы показателей и спорные примеры. Затем сопоставляются измерения на согласованном объёме данных. Быстрый ответ с потерянными строками не считается полезным результатом оптимизации.

  • Указываются версия СУБД, параметры запроса и характерный объём таблиц.
  • Сохраняются план выполнения, условия замера и сведения о параллельной нагрузке.
  • Для изменений индексов описываются предлагаемые команды и связанные ограничения.
  • В итоговых пояснениях разделяются исправленная логика, полученный эффект и оставшиеся узкие места.

В PostgreSQL режим EXPLAIN ANALYZE действительно выполняет исследуемый запрос. Поэтому его применение к изменяющим данным операциям и тяжёлым выборкам согласуют заранее; предпочтительна подготовленная тестовая копия. Один план без фактических данных полезен для первичного разбора, но не заменяет проверку полученного результата в рабочем сценарии.

Что сверять при переносе SQL-логики между СУБД

Перенос отчёта или процедуры оценивают по поведению на согласованных данных. Помимо успешного запуска проверяют правила работы с отсутствующими значениями, преобразованием типов, округлением, датами и временными границами. Даже небольшое изменение условия соединения или фильтра способно поменять итоговые суммы при внешне похожем запросе.

Контрольный комплект для миграции

  1. Исходный SQL или код процедуры с описанием параметров и ожидаемого результата.
  2. Структура используемых таблиц, типы столбцов, ограничения и зависимости от других функций.
  3. Примеры обычных и пограничных данных: отсутствие записи, повтор, пустое значение, переход даты, отрицательная или нулевая сумма.
  4. Результат исходной системы по этим примерам и объяснение существенных бизнес-правил.
  5. Условия выполнения: периодичность, объём данных, допустимое время и ограничения доступа.

Если процедура изменяет данные, отдельно рассматриваются последовательность операций, обработка ошибки и состояние таблиц после незавершённого запуска. Для отчётных выборок проверяется одинаковая детализация: результат по документу, строке документа или группе объектов. Эти уровни нельзя незаметно подменять при переписывании запроса.

После переноса полезно сохранить SQL-скрипт, перечень изменений и контрольные результаты. Нерешённые зависимости отмечаются явно: например, не предоставлена вызываемая функция или неизвестно правило заполнения поля. Такой перечень позволяет продолжить работу с конкретного вопроса и согласовать дальнейшую проверку без передачи лишних рабочих данных и доступов.

Заявка

Отправьте SQL-задачу на разбор

Приложите текст запроса, ошибку, структуру таблиц, СУБД и ожидаемый результат. Можно начать без доступа к базе — по коду и описанию.

  • исправление SQL-запроса;
  • оптимизация медленного отчёта;
  • перенос Oracle PL/SQL;
  • выгрузка для Excel, BI, CRM или ERP.
SQL, PostgreSQL, Greenplum, Oracle PL/SQL, отчёты и выгрузкиrequest@sql.moscow
НаписатьОбсудить задачу ↗