دمو · ایجنت‌ها · ابزارهای رایگان · گالری · وضعیت

کوئری‌نویس — ایجنتِ هوشِ مصنوعیِ فارسی

کوئریِ SQL

کوئری‌نویسِ چیستا چه می‌کند؟

چه چیزی تحویل می‌گیری

🎁 کوئریِ SQL کامل + توضیح

نمونهٔ واقعیِ خروجی

درخواست: «کوئری برای ۱۰ مشتریِ پرخریدِ ماه» · کنترلِ کیفیت: 9 از ۱۰

کوئری ۱۰ مشتریِ پرخریدِ ماه

این کوئری ۱۰ مشتری را بر اساس مجموع مبلغ خریدهای قطعی در ماه جاری رتبه‌بندی می‌کند. فرض شده جداول customers و orders هستند، مبلغ نهایی در total_amount ذخیره می‌شود و وضعیت سفارش قطعی paid یا completed است.

کوئری

```sql SELECT c.id AS customer_id, c.full_name, COUNT(o.id) AS order_count, SUM(o.total_amount) AS total_purchase FROM customers AS c JOIN orders AS o ON o.customer_id = c.id WHERE o.created_at >= DATE_TRUNC('month', CURRENT_DATE) AND o.created_at < DATE_TRUNC('month', CURRENT_DATE) + INTERVAL '1 month' AND o.status IN ('paid', 'completed') GROUP BY c.id, c.full_name ORDER BY total_purchase DESC, order_count DESC, c.id LIMIT 10; ```

توضیح

این نسخه برای PostgreSQL نوشته شده است. بازهٔ زمانی به‌صورت نیمه‌باز تعریف شده؛ یعنی از ابتدای ماه جاری تا پیش از ابتدای ماه بعد. این روش، ساعت و دقیقهٔ سفارش‌های روز آخر ماه را نیز درست پوشش می‌دهد. رتبه‌بندی ابتدا بر اساس مجموع مبلغ خرید، سپس در صورت تساوی بر اساس تعداد سفارش انجام می‌شود. شرط وضعیت نیز سفارش‌های لغوشده، ناموفق یا مرجوعی را کنار می‌گذارد؛ مقادیر وضعیت را با داده‌های واقعی سامانه هماهنگ کنید. منظور این کوئری ماه میلادی جاریِ تقویم پایگاه داده است. اگر گزارش باید بر مبنای ماه شمسی باشد، تاریخ شروع و پایان ماه شمسی را از برنامه به‌صورت پارامتر ارسال کنید و به‌جای DATE_TRUNC از :start_date و :end_date استفاده کنید.

نام فرضیکاربرد
customers.idشناسهٔ مشتری
customers.full_nameنام مشتری
orders.customer_idارتباط سفارش با مشتری
orders.created_atزمان ثبت یا قطعی‌شدن سفارش
orders.total_amountمبلغ نهایی سفارش
orders.statusوضعیت سفارش

نسخهٔ پارامتری برای ماه دلخواه یا ماه شمسی

```sql SELECT c.id AS customer_id, c.full_name, COUNT(o.id) AS order_count, SUM(o.total_amount) AS total_purchase FROM customers AS c JOIN orders AS o ON o.customer_id = c.id WHERE o.created_at >= :start_date AND o.created_at < :end_date AND o.status IN ('paid', 'completed') GROUP BY c.id, c.full_name ORDER BY total_purchase DESC, order_count DESC, c.id LIMIT 10; ``` :start_date باید ابتدای ماه و :end_date ابتدای ماه بعد باشد؛ برای نمونه، این دو مقدار می‌توانند در لایهٔ برنامه از تاریخ شمسی به تاریخ قابل‌ذخیره در پایگاه داده تبدیل شوند.

نکاتِ ایندکس/کارایی

برای جدول بزرگ، ایندکسی که فیلتر تاریخ و وضعیت و سپس اتصال به مشتری را پوشش دهد مفید است. ترتیب دقیق ستون‌ها باید با توزیع داده و EXPLAIN ANALYZE بررسی شود.

بررسیهدف
EXPLAIN ANALYZEاطمینان از استفادهٔ مؤثر از ایندکس
نوع total_amountترجیح NUMERIC/DECIMAL برای مبالغ مالی
منطقهٔ زمانیجلوگیری از جابه‌جایی سفارش در مرز ماه
وضعیت مرجوعیمحاسبهٔ مبلغ خالص به‌جای فروش ناخالص

نمونه‌درخواست‌ها

«کوئری برای ۱۰ مشتریِ پرخریدِ ماه»

هزینه

پرداخت به اندازهٔ مصرف — معمولاً چند هزار تومان برای هر کار؛ قبل از اجرا تخمینِ هزینه را می‌بینی.

✨ همین را برای کسب‌وکارِ من بساز
✦ همین حالا از کوئری‌نویس کار بکش
درخواستِ دعوت‌نامه عضو هستی؟ ورود

ایجنت‌های مرتبط

تحلیل‌گرِ دادهدستیارِ اکسلتحلیلِ نظرسنجیتحلیلِ احساساتِ نظراتتحقیقِ پیشرفتهتحلیل‌گرِ فروش
دربارهٔ ما · تماس با ما · قوانین و شرایطِ استفاده · حریمِ خصوصی · رویهٔ بازگشتِ وجه