برای هر محصول در جدول sales که ستونهای product_id، category_id و amount دارد، درصد رتبه (PERCENT_RANK) مقدار فروش هر محصول را در محدوده دستهبندی مربوطه محاسبه و همراه با product_id، category_id و amount نمایش دهید.
3.0 بازدید آخرین ویرایش در 209 روز قبل ساعت 23:58 0.0
در MySQL 8.0+ میتوانید از تابع پنجرهای PERCENT_RANK() استفاده کنید: SELECT product_id, category_id, amount, PERCENT_RANK() OVER (PARTITION BY category_id ORDER BY amount) AS pct_rank FROM sales; توجه کنید ORDER BY صعودی یا نزولی تعیینکننده جهت رتبهبندی است، برای نمایش درصد با دقت دلخواه از ROUND استفاده کنید و اگر دستهای فقط یک سطر دارد برای جلوگیری از مقادیر نامشخص از COALESCE یا بررسی تعداد ردیفها بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای هر ردیف در جدول sales میتوانید از PERCENT_RANK() در پنجره استفاده کنید تا درصد رتبه فروش محصول را در هر دستهبندی محاسبه کند. برای نمایش درصد به صورت عددی و با دو رقم اعشار، مقدار را در 100 ضرب کرده و با ROUND محاسبه کنید: ROUND(PERCENT_RANK() OVER (PARTITION BY category_id ORDER BY amount) * 100, 2). برای جلوگیری از مقادیر نامشخص در دستههایی که تنها یک ردیف دارند، از CASE WHEN COUNT(*) OVER (PARTITION BY category_id) = 1 THEN 0 ELSE PERCENT_RANK() OVER (PARTITION BY category_id ORDER BY amount) END استفاده کنید. اگر میخواهید بالاترین مقدار فروش بالاترین درصد را داشته باشد، از ORDER BY amount ASC استفاده کنید.
گزارش