برای جدول 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) را در نظر بگیرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای بدست آوردن سه کارمند برتر هر 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 استفاده کنید.
گزارش