یک پرس‌وجو در MySQL بنویسید که با استفاده از تابع FIELD رکوردهای جدول orders را براساس ترتیب دلخواه وضعیت ('pending','processing','shipped','cancelled') مرتب کرده و تعداد هر وضعیت را نمایش دهد.

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:38

0.0

برای حل این سوال از تابع‌های گروه‌بندی و ترتیب در MySQL استفاده کنید: ابتدا با GROUP BY وضعیت را دسته‌بندی کرده و تعداد هر گروه را با COUNT(*) محاسبه کنید، سپس برای اعمال ترتیب سفارشی روی ستون status از ORDER BY FIELD(status,'pending','processing','shipped','cancelled') استفاده کنید. نکته مهم این است که FIELD مقدار 0 برمی‌گرداند اگر مقدار وضعیت در لیست نباشد که باعث قرار گرفتن آن‌ها در انتهای خروجی می‌شود؛ این روش برای گزارش‌گیری مدیریتی (Database Administration) و مرتب‌سازی سفارشی بسیار مفید است.

توسط پژوهشگر در 221 روز قبل ساعت 01:38
دسته بندی ها: MySQL MySQL for beginner
arash در 221 روز قبل ساعت 12:32

برای گزارش ساده از سفارش‌ها می‌توانید با GROUP BY status و COUNT(*)، تعداد هر وضعیت را محاسبه کرده و سپس با ORDER BY FIELD(status,'pending','processing','shipped','cancelled') رتبه‌بندی دلخواه را اعمال کنید. نکته مهم این است که FIELD مقدار 0 برمی‌گرداند اگر وضعیت در لیست نباشد؛ با ترتیب ascending این رکوردها می‌توانند زودتر از بقیه ظاهر شوند، بنابراین اگر می‌خواهید نامعروف‌ها در انتها باشند از DESC در FIELD استفاده کنید یا یک شرط اضافی اضافه کنید. برای بهینه‌سازی اجرا، داشتن اندیس روی ستون status به بهبود سرعت GROUP BY و ORDER BY کمک می‌کند. همچنین می‌توانید برای جلوگیری از خروجی نامعمول، NULL را با COALESCE(status,'UNKNOWN') دسته‌بندی کنید تا خروجی قابل پیش‌بینی باشد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری