برای جدول employees با ستون‌های id، name، department و salary یک کوئری بنویسید که برای هر department شماره ردیف (ROW_NUMBER) را بر اساس salary به‌صورت نزولی محاسبه کند و فقط سه نفر برتر هر department را نمایش دهد.

7.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:32

0.0

از قابلیت پنجره‌ای ROW_NUMBER() در MySQL 8+ استفاده کنید: ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) را در یک CTE یا زیرپرس‌وجو محاسبه کنید و سپس ردیف‌هایی که row_number ≤ 3 هستند را فیلتر نمایید. نکات: حتما ORDER BY داخل OVER را مشخص کنید و در صورتی که نسخه MySQL قدیمی است، باید روش‌های جایگزین (مثل زیرپرس‌وجوهای هم‌پوشان یا متدهای گروه‌بندی و JOIN) را در نظر بگیرید.

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

برای بدست آوردن سه کارمند برتر هر department با ROW_NUMBER در MySQL 8+، از یک CTE یا زیرپرس‌وجو استفاده کنید و مقدار ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) را محاسبه کنید. سپس فقط ردیف‌های با row_number <= 3 را نمایش دهید. حتما در بخش OVER از ORDER BY مناسب استفاده کنید تا ترتیب بر اساس salary به‌درستی اعمال شود. اگر نسخه MySQL شما قدیمی است و ROW_NUMBER پشتیبانی نمی‌کند، از روش‌های جایگزین مانند زیرپرس‌وجوهای هم‌پوشان یا JOIN با گروه‌بندی برای انتخاب بالاترین سه مقدار salary استفاده کنید.

گزارش

1 پاسخ

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

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