[ad_1]
مثل هذا السؤال هو حرفيا مربكا للغاية بالنسبة لي.
-job_id: المعرف الفريد للوظائف
-actor_id: المعرف الفريد للممثل
-الحدث: قرار/تخطي/نقل
-اللغة: لغة المحتوى
-time_spent: الوقت المستغرق لمراجعة المهمة بالثواني
-org: تنظيم الفاعل،
-ds: التاريخ بتنسيق yyyy/mm/dd. يتم تخزينه في شكل نص ونستخدم المعزوفة للتشغيل. لا حاجة لوظيفة التاريخ
CREATE TABLE job_data ( ds DATE, job_id INT NOT NULL, actor_id INT NOT NULL, event VARCHAR(15) NOT NULL, language VARCHAR(15) NOT NULL, time_spent INT NOT NULL, org CHAR(2) );
ds job_id actor_id لغة الحدث time_spent org
————————————————– —————-
2020-11-30 21 1001 تخطي الانجليزية 15 أ
2020-11-30 221006 نقل عربي 25 ب
2020-11-29 23 1003 قرار فارسي 20 ج
2020-11-28 23 1005 نقل فارسي 22 د
2020-11-28 25 1002 قرار رقم 11 ب
2020-11-27 11 1007 قرار فرنسي 104 د
2020-11-26 23 1004 تخطي الفارسية 56 أ
2020-11-25 201003 نقل ايطالي 45 ج
وهذا هو الجدول الذي علينا العد منه. النقاط التي يجب مراعاتها:
ماذا يعني الحدث؟ ما الذي يجب مراعاته للمراجعة؟
ما حاولت:
SELECT COUNT(*) AS no_of_job, ds AS dates FROM job_data GROUP BY ds ORDER BY no_of_job DESC;
الحل 1
لا يمكنك ذلك: لا تحتوي بياناتك على أي طابع زمني يسمح لك بتحديد الوقت من اليوم الذي تمت فيه مراجعة الوظيفة، وبما أن “لكل ساعة في اليوم” يعد مطلبًا بدون هذه المعلومات، فلا يوجد شيء يمكنك القيام به للوفاء به هو – هي.
أظن أن تصميم بياناتك معيب – مما يعني أن بياناتك غير مجدية لهذه المهمة – أو أن المهمة محددة بشكل سيء ويجب عليك الرجوع إلى من أعطاها لك والحصول على توضيح المتطلبات الدقيقة، ويفضل أن يكون ذلك مع نموذج الإدخال والإخراج بيانات.
الحل 2
يعمل هذا بشكل جيد في MYSQL، بشرط أن تكون البيانات غير مكتملة، ولكن إليك ما فعلته على أمل أن ينجح في بعض المشاريع وما إلى ذلك !!
—
SELECT ds AS Dated, COUNT(job_id) AS job_review_counts, ROUND(COUNT(job_id)/(SUM(time_spent)/(60*60)),2) AS job_review_per_hour_each_day FROM job_data WHERE ds BETWEEN '01-11-2020' AND '30-11-2020' GROUP BY ds ORDER BY ds
—
الإخراج في ماي إس كيو إل
25/11/2020 1 80.00
26/11/2020 1 64.29
27/11/2020 1 34.62
28/11/2020 2 218.18
29/11/2020 1 180.00
30/11/2020 2 180.00
—
[ad_2]
コメント