برای هر کارمند، رتبه حقوق او را در بین همکاران همان بخش با استفاده از تابع RANK محاسبه کن.
1.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:45 0.0
برای حل این مسئله از MySQL 8.0+ و توابع پنجرهای استفاده کن؛ پرسوجو باید جدولی مانند employees(id, name, department, salary) را پردازش کرده و ستون جدیدی با RANK() OVER (PARTITION BY department ORDER BY salary DESC) اضافه کند. نکته: RANK برای مقادیر برابر، رتبه یکسان میدهد و بین رتبهها فاصله ایجاد میکند — اگر میخواهی رتبهها متوالی باشند از DENSE_RANK استفاده کن.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای هر کارمند، رتبه حقوق در بین همکاران همان بخش را میتوان با RANK() OVER (PARTITION BY department ORDER BY salary DESC) محاسبه کرد. تفاوت RANK با DENSE_RANK این است که RANK برای مقادیر برابر رتبه یکسان میدهد اما بین رتبهها فاصله میگذارد؛ اگر میخواهی رتبهها متوالی باشند از DENSE_RANK استفاده کن. بهینهسازی: در MySQL 8.0+ اجرای پنجره میتواند با ایندکس مناسب روی (department, salary) کارایی بهتری بدهد و در جداول بزرگ ممکن است تفاوت قابل توجهی ایجاد کند. نهایتاً میتوانی خروجی را با یک alias مانند rank_within_department در یک SELECT نمایش بدهی.
گزارش