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

توسط پژوهشگر در 220 روز قبل ساعت 01:45
دسته بندی ها: MySQL MySQL for beginner
arman در 220 روز قبل ساعت 12:10

برای هر کارمند، رتبه حقوق در بین همکاران همان بخش را می‌توان با 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 نمایش بدهی.

گزارش

1 پاسخ

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

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