با استفاده از تابع ROW_NUMBER() در MySQL، برای هر دپارتمان سه کارمند با بالاترین حقوق از جدول employees برگردانید.
5.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:32 0.0
در MySQL 8+ از تابع پنجرهای ROW_NUMBER() استفاده کنید: با OVER(PARTITION BY department_id ORDER BY salary DESC) به هر ردیف شماره ردیف درون هر دپارتمان اختصاص دهید، سپس در یک CTE یا زیرپرسوجو فقط ردیفهایی که rn
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای این کار در MySQL 8+ از ROW_NUMBER() استفاده کنید و مقدار rn را با OVER (PARTITION BY department_id ORDER BY salary DESC) به هر ردیف اختصاص دهید. سپس در یک CTE یا زیرپرسوجو تنها ردیفهایی را بگیرید که rn ≤ 3 باشند تا سه کارمند برتر هر دپارتمان را بدست آورید. اگر میخواهید در صورت وجود همحقوقی در رده سوم، همه آنها را ببینید، به جای ROW_NUMBER از RANK() یا DENSE_RANK() استفاده کنید. همچنین به کارایی دقت کنید و از ایندکس مناسب روی department_id و salary بهره ببرید.
گزارش