با استفاده از تابع 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

توسط پژوهشگر در 201 روز قبل ساعت 03:32
دسته بندی ها: MySQL MySQL for beginner
arash در 201 روز قبل ساعت 06:06

برای این کار در 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 بهره ببرید.

گزارش

1 پاسخ

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

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