با استفاده از تابع 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 برای مقادیر مساوی رتبه یکسان میدهد و رتبههای بعدی را پرش میکند.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای هر دسته، مجموع فروش هر محصول را با 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+ پشتیبانی میشود.
گزارش