در یک جدول tasks با ستون‌های user_id و duration_seconds، یک کوئری MySQL بنویسید که مجموع مدت‌زمان هر کاربر را با استفاده از تابع SEC_TO_TIME به فرمت HH:MM:SS نمایش دهد.

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

0.0

برای حل این مسئله از تابع تجمعی SUM روی ستون duration_seconds و سپس تبدیل نتیجه‌ی ثانیه به فرمت زمان با SEC_TO_TIME استفاده کنید: مثلاً SELECT user_id, SEC_TO_TIME(SUM(duration_seconds)) AS total_time FROM tasks GROUP BY user_id; این کار در MySQL انجام می‌شود؛ نکته: برای جلوگیری از مقدار NULL می‌توانید از COALESCE استفاده کنید و اگر مجموع ثانیه‌ها خیلی بزرگ است مراقب محدودیت‌های بازه زمانی در SEC_TO_TIME باشید.

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

برای جلوگیری از برگشت NULL از COALESCE(SUM(duration_seconds),0) استفاده کنید و نتیجه را با SEC_TO_TIME(...) به فرمت HH:MM:SS نمایش دهید. این کار به درستی جمع مدت‌زمان هر کاربر را نشان می‌دهد. توجه کنید SEC_TO_TIME محدودیتی به اندازه TIME دارد و بیش از 838:59:59 را پشتیبانی نمی‌کند؛ در صورت وجود مقادیر بزرگ‌تر، نتیجه از دست می‌رود. اگر لازم است کل مدت را دقیقاً حتی چند روز نمایش دهید، می‌توانید مجموع ثانیه‌ها را با محاسبات دستی به روز-ساعت-دقیقه-ثانیه تبدیل کنید.

گزارش

1 پاسخ

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

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