با استفاده از تابع RANK در MySQL، برای هر دسته (category) در جدول sales رتبه‌ی محصولات (product_id) را بر اساس مجموع فروش (sale_amount) به‌صورت نزولی محاسبه کنید و خروجی شامل category، product_id، total_sales و rank باشد.

14.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:53

0.0

ابتدا مجموع فروش را برای هر product_id در هر category با GROUP BY محاسبه کنید (یا از SUM() در یک زیرپرس‌وجو/CTE استفاده کنید)، سپس روی نتایج تابع پنجره‌ای RANK() OVER (PARTITION BY category ORDER BY total_sales DESC) را اعمال کنید؛ توجه داشته باشید که این قابلیت از MySQL 8.0 به بعد پشتیبانی می‌شود و RANK برای مقادیر مساوی رتبه یکسان می‌دهد و رتبه‌های بعدی را پرش می‌کند.

توسط پژوهشگر در 201 روز قبل ساعت 03:53
دسته بندی ها: MySQL MySQL for beginner
sara در 201 روز قبل ساعت 04:48

برای هر دسته، مجموع فروش هر محصول را با GROUP BY category, product_id محاسبه کنید و خروجی نهایتاً شامل category، product_id، total_sales و rank باشد. سپس از تابع پنجره‌ای RANK() OVER (PARTITION BY category ORDER BY total_sales DESC) برای محاسبه رتبه‌ها استفاده کنید. این ویژگی از MySQL 8.0 به بالا پشتیبانی می‌شود و در صورت وجود مقادیر مساوی، رتبه یکسانی می‌دهد و رتبه‌های بعدی را پر می‌کند. اگر می‌خواهید به‌جای پرش رتبه‌ها، رتبه‌های متوالی حفظ شوند، می‌توانید از DENSE_RANK() استفاده کنید. برای خوانایی و استفاده مجدد می‌توانید از یک CTE مانند WITH sales_by_prod AS (...) استفاده کنید که در MySQL 8+ پشتیبانی می‌شود.

گزارش

1 پاسخ

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

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