◯ Бесплатно: 5 раз/день • Сброс через 17h 9m
Разработка и Технические

Генератор SQL‑запросов

Опишите, что вам нужно простым английским, и получите корректный, читаемый SQL‑запрос для PostgreSQL, MySQL, SQLite, SQL Server, BigQuery или Snowflake — с учётом вашей схемы, с пояснением каждого клаузула и замечаниями о индексах и производительности.

Узнать больше

Генератор SQL‑запросов преобразует вопрос — «ежемесячный доход по странам за 2025 год, только клиенты с более чем тремя заказами» — в запрос, написанный под выбранную вами СУБД: PostgreSQL, MySQL и MariaDB, SQLite, SQL Server, BigQuery или Snowflake. Вставьте свои таблицы и столбцы, и запрос будет использовать именно эти имена; оставьте схему пустой — он укажет сделанные предположения. Вы выбираете стиль (читаемые CTE, компактный или аналитический с оконными функциями) и степень пояснений, а каждый ответ заканчивается описанием формы результата и индексами, которые ускорят выполнение. Он никогда не генерирует деструктивные операторы, если вы явно не запросите их.

0 / 4000
0 / 10000

✓ Бесплатно — без регистрации и без банковской карты.

Для всех

Ежемесячный доход по странам, только активные клиенты

Финансовый отчёт с фильтром клиентов в стиле HAVING

Показать предпросмотр ввода и вывода

Ввод

Что должен возвращать запрос?
Monthly revenue per country for 2025, counting only customers who placed more than 3 orders in 2025. Sort by month, then revenue descending.
Таблицы и столбцы (необязательно)
orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, country text, signup_at timestamp)
Диалект SQL
PostgreSQL
Стиль запроса
Читаемый (CTEs, один клаузул на строку)
Пояснение
Кратко

Вывод (фрагмент)

```sql
WITH active_customers AS (
  SELECT o.customer_id
  FROM orders AS o
  WHERE o.created_at >= DATE '2025-01-01'
    AND o.created_at <  DATE '2026-01-01'
  GROUP BY o.customer_id
  HAVING COUNT(*) > 3
)
SELECT
  DATE_TRUNC('month', o.created_at)::date AS month,
  c.country,
  SUM(o.total_cents) / 100.0            AS revenue
FROM orders AS o
JOIN active_customers AS a ON a.customer_id = o.customer_id
JOIN customers        AS c ON c.id = o.customer_id
WHERE o.created_at >= DATE '2025-01-01'
  AND o.created_at <  DATE '2026-01-01'
GROUP BY 1, 2
ORDER BY month, revenue DESC;
```

**Схема использована как есть.**

CTE находит клиентов с более чем тремя заказами в 2025 году; основной запрос оставляет только их заказы, обрезает каждый заказ до месяца и суммирует доход по месяцам и странам. Диапазон дат полузакрытый, поэтому 31 декабря учитывается один раз…
Разработчики

Последний заказ каждого клиента

Запрос с оконными функциями, заменяющий коррелированный подзапрос

Показать предпросмотр ввода и вывода

Ввод

Что должен возвращать запрос?
For every customer, their most recent order with its total and date.
Таблицы и столбцы (необязательно)
orders(id, customer_id, total_cents integer, created_at timestamp) customers(id, email text)
Диалект SQL
MySQL / MariaDB
Стиль запроса
Аналитический (оконные функции, где это уместно)
Пояснение
Подробно (пункт за пунктом)

Вывод (фрагмент)

```sql
WITH ranked AS (
  SELECT
    o.customer_id,
    o.id          AS order_id,
    o.total_cents,
    o.created_at,
    ROW_NUMBER() OVER (PARTITION BY o.customer_id ORDER BY o.created_at DESC, o.id DESC) AS rn
  FROM orders AS o
)
SELECT c.id AS customer_id, c.email, r.order_id, r.total_cents / 100.0 AS total, r.created_at
FROM customers AS c
JOIN ranked AS r ON r.customer_id = c.id AND r.rn = 1
ORDER BY r.created_at DESC;
```

**Схема использована как есть.**

| Выражение | Что делает |
|---|---|
| `ROW_NUMBER() OVER (PARTITION BY … ORDER BY created_at DESC, id DESC)` | нумерует заказы каждого клиента, начиная с самых новых; tie‑breaker по id делает результат детерминированным |
| `JOIN ranked … AND r.rn = 1` | оставляет ровно одну строку на клиента |…

Результаты Генератор SQL‑запросов появятся здесь

Ожидайте аккуратные блоки кода с комментариями и краткое пояснение изменений.

Как использовать Генератор SQL‑запросов

  1. Сформулируйте вопрос так, как вы бы спросили коллегу: какие строки, какие фильтры, какие группировки, какой порядок.
  2. Вставьте свои таблицы и столбцы, если они у вас есть — по одной таблице на строку, а её столбцы в скобках. Затем запрос использует ваши реальные имена и не требует правок.
  3. Выберите диалект, который вы используете; функции работы с датами, LIMIT vs TOP и кавычки различаются в PostgreSQL, MySQL, SQLite, SQL Server, BigQuery и Snowflake.
  4. Выбирайте объяснение «Подробно», когда изучаете или проверяете запрос другого человека, и «Только запрос», когда вы уже знаете, что запросили.

Сценарии использования

1

Ответьте на бизнес‑вопрос аналитика без ожидания команды данных.

2

Преобразуйте запрос отчёта в запрос, учитывающий реальную схему хранилища.

3

Перепишите медленный запрос в читаемую версию с CTE и необходимыми индексами.

4

Переведите запрос из MySQL в PostgreSQL или BigQuery при миграции.

5

Сформируйте SELECT, показывающий, какие строки затронет UPDATE или DELETE, перед их выполнением.

Советы для достижения лучших результатов

  • Укажите типы столбцов в схеме (created_at timestamp, total_cents integer), и запрос корректно обрабатывает даты и деньги.
  • Указывайте 'только' и 'по крайней мере' явно — 'клиенты с более чем 3 заказами' превращается в HAVING, а не WHERE.
  • Для дашборда запросите аналитический стиль: оконные функции избавляют от самосоединений, замедляющих отчёты.
  • Прочитайте раздел о производительности; там указан индекс, превращающий полное сканирование таблицы в поиск.

Часто задаваемые вопросы

Какие базы данных поддерживаются?

PostgreSQL, MySQL и MariaDB, SQLite, SQL Server (T‑SQL), BigQuery и Snowflake. Запрос использует функции и синтаксис выбранного диалекта — обрезка дат, LIMIT или TOP, кавычки и агрегирование строк различаются, и вывод формируется под выбранный диалект.

Обязательно ли вставлять мою схему?

Нет, но это полезно. При наличии схемы запрос использует точные имена таблиц и столбцов и не требует правок. Если схемы нет, инструмент предполагает минимально возможную схему и перечисляет все допущения над объяснением, чтобы вы могли их исправить.

Сгенерирует ли он DELETE или UPDATE?

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

Как он обрабатывает даты и деньги?

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

Гарантировано ли, что запрос будет быстрым?

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

🔒
Ваша конфиденциальность защищена

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

Похожие инструменты

Попробовать агента

Создание БрендаСгенерируйте название, придумайте слоган, напишите историю бренда и создайте бренд-гайд.Попробовать агента →

Похожий процесс

Запустите Длинное ВидеоИдея → сценарий → миниатюра → загрузка метаданных за одну сессиюЗапустить процесс →