SQL-Запрос из Вашего Собственного Вопроса

SQL-Запрос из Вашего Собственного Вопроса

Оцените первым 0 ✍️ ТекстПрограммирование
анализкодобъяснениепрограммирование

Промпт

Действуй как старший специалист по данным, который однажды провёл ночь, чиня отчёт, который выглядел прекрасно и считал один и тот же заказ дважды, и который из-за этого никогда не отдаёт запрос, не отдав вместе с ним способ его проверить. Контекст: моя база это [КАКАЯ БАЗА И ВЕРСИЯ - НАПР: PostgreSQL 15]. Вопрос, на который мне нужно ответить, это [ВОПРОС ОБЫЧНЫМИ СЛОВАМИ, КАК ВЫ РАССКАЗАЛИ БЫ ЕГО КОЛЛЕГЕ - НАПР: сколько новых клиентов купили больше одного раза в прошлом квартале]. Вот таблицы и колонки, которые у меня есть, и других нет: [ВСТАВЬТЕ СЮДА КАЖДУЮ ТАБЛИЦУ С ЕЁ КОЛОНКАМИ И ТИПАМИ] Объём это [ПРИМЕРНЫЙ РАЗМЕР - НАПР: около 2 миллионов строк в заказах]. Мои права это [ЧТО ВЫ МОЖЕТЕ ДЕЛАТЬ - НАПР: только чтение]. Часовой пояс данных это [ПОЯС - НАПР: UTC, а результат мне нужен по московскому времени]. Задача: написать запрос, который отвечает ровно на этот вопрос, объяснить обычными словами, что он делает, и дать мне способ проверить результат. Правила: 1. Используй только те таблицы и колонки, которые я перечислил. Если чего-то не хватает для ответа, скажи, чего не хватает, вместо того чтобы выдумывать колонку. 2. Пиши только чтение. Никаких DELETE, UPDATE, DROP или ALTER, даже в виде закомментированного предложения. 3. Объясни запрос обычными словами, блок за блоком, говоря, что каждое соединение и каждый фильтр отсекает. Читателю не должно требоваться знание SQL, чтобы уследить. 4. Обработай пустое значение намеренно и скажи, какое решение принял: строка без значения попадает в подсчёт, выпадает из него или становится нулём. 5. Следи за тем, что дублирует строки. Если какое-то соединение может умножить результат, укажи где и покажи, как ты этого избежал. 6. Даты и пояса выходят приведёнными к запрошенному поясу, а интервал задан явно: скажи, входит последний день или нет. 7. Отдай также проверочный запрос, попроще и другим путём, который докажет, что число из первого верное. 8. Если мой вопрос неоднозначен, возьми самое частое прочтение, иди дальше и скажи в конце, какое прочтение ты использовал и каким было бы другое. 9. Оформи так, чтобы читал человек: одно предложение на строку, короткие псевдонимы таблиц и комментарий только там, где строка не объясняет себя сама. 10. Назови одну вещь, которая ускорила бы запрос на указанном объёме, и скажи также, когда это того не стоит. Формат ответа: сначала готовый запрос, в блоке кода, без текста внутри; затем объяснение обычными словами, блок за блоком; затем проверочный запрос, в отдельном блоке кода, с одной фразой о том, с чем должен сойтись его результат; затем список того, что ты предположил; и в конце замечание о производительности.

Как использовать

Написать запрос это лёгкая часть. Дорого обходится другое: через неделю выясняется, что число вышло раздутым, потому что соединение продублировало строки, а отчёт уже разошёлся. Этот промпт отдаёт запрос, объяснение обычными словами и второй запрос для проверки первого. Работает в ChatGPT, Claude и Gemini. 1. Вставьте названия колонок с их типами. Без этого ИИ выдумает правдоподобную колонку, и запрос упадёт на базе. 2. Задайте вопрос обычными словами, как рассказали бы коллеге. Вопрос, переведённый в полу-SQL, вернёт полу-SQL. 3. Назовите часовой пояс данных: это тихая причина отчёта, сдвинутого на сутки. 4. Запустите проверочный запрос до того, как отправите число кому-либо. Если два не сходятся, ошибка там. 5. Прочитайте список предположений: именно там решение про строки без значения, а оно меняет итог. Совет: храните сработавшие запросы вместе с исходным вопросом сверху. Это станет вашим словарём базы.

Работает с ChatGPT Claude Gemini

Оцените этот промпт

📖 Из блога Prompteiro

Все статьи →

💡 Смотрите также