پرامپت ساخت کوئری SQL
کوئری SQL تمیز از نیاز فارسی: فرضیات schema، منطق، نسخه performance و هشدارها.
مناسب برای: تحلیلگر داده، بکاند و محصول
این پرامپت چه کاری انجام میدهد؟
کوئری ad-hoc کند یا با JOIN اشتباه داشبورد را غلط میکند. این پرامپت {{REQUIREMENT}} و {{SCHEMA}} را میگیرد و فرضیات، کوئری، توضیح، variant بهینه و pitfalls (NULL، duplicate) میدهد.
پیشفرض PostgreSQL unless dialect دیگر. برای analyst، بکاند و PM که نیاز را به SQL تبدیل میکنند.
در اپ از parameterized query استفاده کنید — این پرامپت ساختار SQL میسازد نه binding. python-debug برای باگ اپ، api-design برای endpoint گزارش.
خود پرامپت
نسخه فعال را کپی یا اجرا کن
تو یک متخصص SQL هستی. بر اساس نیاز کسبوکار، کوئری را بنویس. خروجی: 1) فرضیات schema (اگر داده نشد) 2) کوئری نهایی 3) توضیح کوتاه منطق 4) نسخه جایگزین در صورت نیاز به performance 5) هشدارهای مهم (NULL، duplicate، injection) قوانین: - از SELECT * پرهیز کن مگر صریحاً خواسته شود - برای فیلتر تاریخ و وضعیت، شرطها را واضح بنویس - اگر dialect مشخص نشده، PostgreSQL فرض کن نیاز: {{REQUIREMENT}} جداول / ستونها (اگر داری): {{SCHEMA}} Dialect: {{DIALECT}}
چطور شخصیسازی کنی
- معنای status و تاریخ در {{REQUIREMENT}}.
- {{SCHEMA}} با کلیدهای جدول.
- {{DIALECT}} را صریح بنویسید: PostgreSQL 15 یا MySQL 8.
- فیلترهای کسبوکار را صریح.
- روی staging با LIMIT تست کنید.
جدول متغیرهای پرامپت
هر متغیر را با مثال خوب پر کنید؛ مثال بد نشان میدهد چه چیزی خروجی را خراب میکند.
| متغیر | معنا | مثال خوب | مثال بد |
|---|---|---|---|
| {{REQUIREMENT}} | نیاز کسبوکار به زبان طبیعی | مشتریان با ≥۲ سفارش پرداختشده در ۳۰ روز | گزارش بده |
| {{SCHEMA}} | جداول و ستونهای کلیدی | customers(id,name), orders(id,customer_id,status,created_at) | خالی |
| {{DIALECT}} | نوع دیتابیس اگر مشخص نیست | PostgreSQL 15 | خالی — پیشفرض PostgreSQL |
از کپی تا نتیجه؛ قدمبهقدم
- ۱معنای status و تاریخ را در REQUIREMENT تعریف کنید.
- ۲dialect را صریح بنویسید اگر MySQL است.
- ۳کوئری را روی داده تست کنید.
- ۴نسخه performance را برای دیتابیس بزرگ بررسی کنید.
- ۵در اپ از parameterized query استفاده کنید.
ورودی ضعیف در برابر ورودی قوی
ضعیف
کوئری فروش ماهانه
قوی
نیاز: top ۱۰ مشتری بر اساس مبلغ پرداختشده Q1 Schema: orders(amount,status,created_at,customer_id) Dialect: PostgreSQL
بدون schema و تعریف paid، JOIN و فیلتر اشتباه میشود.
سناریوی کامل
هدف: گزارش retention برای داشبورد محصول
ورودی پرشده
نیاز: کاربران فعال هفتگی ۴ هفته متوالی Schema: events(user_id, event_type, created_at) DIALECT: PostgreSQL 15
خروجی مورد انتظار
فرضیات: status='paid'؛ بازه ۳۰ روز اخیر؛ timezone UTC. کوئری: SELECT c.id, c.name, COUNT(*) … HAVING COUNT(*)>=2 توضیح: join مشتری-سفارش با فیلتر تاریخ. بهینه: index روی (customer_id, created_at)؛ variant با CTE اگر حجم بالا. هشدار: NULL status را exclude کنید؛ duplicate order_id را با DISTINCT بررسی کنید.
قدم بعد: روی staging اجرا کنید؛ در api-design endpoint /analytics/retention تعریف کنید.
نمونه ورودی
نیاز: مشتریان با سفارش unpaid بیش از ۷ روز Schema: orders(id,customer_id,status,created_at), customers(id,email) PostgreSQL
نمونه خروجی
فرض: unpaid=status='pending_payment' SELECT … WHERE created_at < now() - interval '7 days' هشدار: index روی (status, created_at)
چه زمانی از این پرامپت استفاده کنی
- ساخت گزارش فروش از دیتابیس
- نوشتن کوئری برای داشبورد
- تبدیل نیاز محصول به SQL
- بازنویسی کوئری کند
- آموزش JOIN و GROUP BY با مثال واقعی
اشتباهات رایج
- dialect دیتابیس را مشخص نکردن (MySQL در برابر Postgres)
- تعریف نکردن معنای status یا تاریخ
- درخواست نتیجه بدون گفتن کلیدهای جدول
- خواستن کوئری بدون ذکر فیلترهای کسبوکار
محدودیتها و موارد نامناسب
- بدون schema فرضیات ممکن است اشتباه باشد.
- SQL injection در runtime با parameterized query جلوگیری شود.
- کوئری روی میلیارد ردیف بدون index review کافی نیست.
- داده حساس را در SCHEMA واقعی نچسبانید — ساختار کافی است.
ادامه در دسته برنامهنویسی یا بازگشت به کتابخانه پرامپتها.
این پرامپت برات مفید بود؟
این پرامپت یا پرامپت مرتبط؟
- پرامپت دیباگ کد پایتون
این صفحه: نیاز گزارش SQL
آن پرامپت: باگ در کد پایتون
- پرامپت برای طراحی API
این صفحه: کوئری تحلیلی
آن پرامپت: طراحی endpoint گزارش
پرامپتهای مرتبط
دیباگ ساختاریافته پایتون: علت ریشهای، محل باگ، فیکس و تست کوچک — نه بازنویسی کل پروژه.
طراحی REST: endpointها، JSON نمونه، خطاها، auth و versioning — قبل از کدنویسی.
از توضیح ستونها، تحلیل، Pivot و بینشهای اکسل بساز.
سؤالات پرتکرار
BigQuery یا Snowflake؟+
در REQUIREMENT dialect را بنویسید.
کوئری کند موجود؟+
REQUIREMENT=بهینهسازی + کوئری فعلی + EXPLAIN اگر دارید.
چند جدول ناشناس؟+
مدل فرضیات مینویسد — با schema واقعی دوباره اجرا کنید.
این پرامپت را با GPT، Claude و Gemini همزمان اجرا کن و بهترین پاسخ را انتخاب کن
در حالت Compare Mode همان پرامپت را یکبار میفرستی و پاسخ سه مدل را کنار هم میبینی — بدون کپیکردن مجدد یا جابهجایی بین تبها.
یا به کتابخانه پرامپتهای آماده برگرد.