با استفاده از تابع 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 نیز ممکن است.

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

برای دسته‌بندی کارمندان بر اساس مدت استخدام با استفاده از 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 وجود دارد که خواناتر و ساده‌تر است.

گزارش

1 پاسخ

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

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