تقسيم التلاميذ على المهن؟
#11
قمت بالتغيير في الكود الذي قدمته لي وإستغنيت على الجدول Job للحساب بالنسب ولكن جملة الإستعلام داخل First تسببت في عدم تنفيذ الإستعلام ولم أتأكد من صحه النتيجة
أتمنى تصحيح الكود

كود :
/*doctors*/ select * from ( select first (select cast(((count(*)/3)+0.9)as integer) from student) s.student_name from student s order by s.student_test_result desc ) union all /*teachers*/ select * from ( select first (select cast(((count(*)/3)+0.5)as integer) from student) skip ((select cast(((count(*)/3)+0.9)as integer) from student)) s.student_name , 'Teacher' job_name from student s order by s.student_test_result desc ) union all /*engineers*/ select * from ( select first (select cast(((count(*)/3))as integer) from student) skip ((select cast(((count(*)/3)+0.5)as integer) from student )) s.student_name from student s order by s.student_test_result desc )


(21-02-2020, 05:17 PM)Lam.Abdeldjalil كتب : هذا سؤال أكاديمي ؟ لا يمكن ان يكون في الواقع Wink


كيف أحل مشكلة عدم التنفيذ لأتأكد من أنه يمكن في الواقع  Tongue

أ
الرد
#12
قصدي لا يمكن أن تطلب مناصب الشغل بالنسب بل بأعداد ثابته ( إذا كان مثال تعليمي يمكن Smile  )

بالـ sql يمكن باستعمال round لكن لن تعطيك دائما نتيجة صحيحة حسب الجدول المعطى
مثال
كود :
select round(4*0.35),round(4*0.35),round(4*0.3) from rdb$database
4 مناصب : 1 طبيب 1 معلم 1 مهندس و الباقي 1  ضائع
------------------------------------------------------------------
الحل :
1 - إن كان عدد الإحتمالات كبير إستعمل حلك جدول.
2 - إن كان عدد الإحتمالات صغير و ثابت إستعمل مصفوفة سجلات  مثال :

كود :
    TJobItem = record       Job_cnt : smallint;       doctors : smallint;       engineers : smallint;       teachers : smallint;     end;

كود :
   jobs : array[1..3] of TJobItem =     (       (Job_cnt : 1; doctors :1; engineers:0; teachers:0 ),       (Job_cnt : 2; doctors :1; engineers:1; teachers:0 ),       (Job_cnt : 3; doctors :2; engineers:1; teachers:0 )     ) ;
لجلب عدد الأطباء لـ 3 مناصب نستعمل
كود :
showmessage(jobs[3].doctors.tostring);
الرد
#13
بالفعل لا يمكن  Blush
جزاك الله خيرا
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم