با استفاده از تابع INTERVAL در MySQL یک کوئری بنویسید که برای جدول employees با ستون hire_date تعداد کارمندان استخدامشده در بازههای زمانی 0-30، 31-90، 91-180 و بیش از 180 روز گذشته را نمایش دهد.
11.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:53 0.0
برای حل از تابع DATEDIFF(CURDATE(), hire_date) برای محاسبه تعداد روز از زمان استخدام استفاده کنید و سپس با تابع INTERVAL مقدار بهدستآمده را در آستانههای 30، 90 و 180 قرار دهید تا شاخص گروه بهدست آید؛ میتوانید با ELT یا CASE آن شاخص را به برچسب خوانا تبدیل و با GROUP BY تعداد هر گروه را شمارش کنید. توجه کنید که ستون hire_date ممکن است NULL باشد (در این صورت از COALESCE یا فیلتر WHERE استفاده کنید) و این راهحل در MySQL 5.x/8.0 قابلاجراست؛ جایگزین سادهتر استفاده از مقایسههای DATE_SUB … BETWEEN نیز ممکن است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای دستهبندی کارمندان بر اساس مدت استخدام با استفاده از INTERVAL، میتوانید از DATEDIFF(CURDATE(), hire_date) همراه با CASE استفاده کنید تا گروههای 0-30، 31-90، 91-180 و بیش از 180 روز را مشخص نمایید. توجه کنید که ممکن است hire_date NULL باشد؛ میتوانید از COALESCE(hire_date, CURDATE()) استفاده کنید یا در WHERE این سطرها را فیلتر کنید. برای کارایی بهتر روی جداول بزرگ، اندیس مناسبی روی ستون hire_date ایجاد کنید. همچنین جایگزین سادهتری مانند DATE_SUB … BETWEEN وجود دارد که خواناتر و سادهتر است.
گزارش