برنامه‌نویسی

پرامپت ساخت کوئری 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 گزارش.

خود پرامپت

نسخه فعال را کپی یا اجرا کن

اجرا در Araaye AI
تو یک متخصص 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

از کپی تا نتیجه؛ قدم‌به‌قدم

  1. ۱معنای status و تاریخ را در REQUIREMENT تعریف کنید.
  2. ۲dialect را صریح بنویسید اگر MySQL است.
  3. ۳کوئری را روی داده تست کنید.
  4. ۴نسخه performance را برای دیتابیس بزرگ بررسی کنید.
  5. ۵در اپ از 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 واقعی نچسبانید — ساختار کافی است.

ادامه در دسته برنامه‌نویسی یا بازگشت به کتابخانه پرامپت‌ها.

این پرامپت برات مفید بود؟

این پرامپت یا پرامپت مرتبط؟

پرامپت‌های مرتبط

سؤالات پرتکرار

BigQuery یا Snowflake؟+

در REQUIREMENT dialect را بنویسید.

کوئری کند موجود؟+

REQUIREMENT=بهینه‌سازی + کوئری فعلی + EXPLAIN اگر دارید.

چند جدول ناشناس؟+

مدل فرضیات می‌نویسد — با schema واقعی دوباره اجرا کنید.

این پرامپت را با GPT، Claude و Gemini هم‌زمان اجرا کن و بهترین پاسخ را انتخاب کن

در حالت Compare Mode همان پرامپت را یک‌بار می‌فرستی و پاسخ سه مدل را کنار هم می‌بینی — بدون کپی‌کردن مجدد یا جابه‌جایی بین تب‌ها.

یا به کتابخانه پرامپت‌های آماده برگرد.