البرمجة

حساب النقاط بناءً على الوزن في قواعد بيانات SQL

في هذا السياق، يمكننا استخدام استعلام SQL لحساب القيمة المطلوبة للعمود “last_score” بناءً على الجداول المتاحة. يتطلب ذلك استخدام عمليات الضرب والقسمة والجمع، بالإضافة إلى استخدام دالة التجميع (SUM) لحساب مجموع الأوزان التي تحمل نفس الاسم.

الاستعلام الذي يحقق ذلك يمكن أن يكون كالتالي:

sql
SELECT scores.id, scores.name, scores.score, scores.item_id, items.weight, (scores.score * items.weight) / (SELECT SUM(weight) FROM items WHERE items.name = scores.name) AS last_score FROM scores JOIN items ON scores.item_id = items.id;

في هذا الاستعلام، نقوم بضم الجدولين “scores” و “items” باستخدام عملية الانضمام (JOIN) حيث تكون قيمة “item_id” في جدول “scores” متطابقة مع قيمة “id” في جدول “items”. ثم نقوم بحساب القيمة المطلوبة للعمود “last_score” باستخدام عمليات الضرب والقسمة، مع استخدام دالة التجميع (SUM) لحساب مجموع الأوزان التي تحمل نفس الاسم.

هذا الاستعلام يعود بنتائج تظهر القيم المحسوبة للعمود “last_score” بناءً على الشروط التي حددتها في السؤال.

المزيد من المعلومات

في سياق قاعدة البيانات المقدمة، يتعامل الاستعلام المذكور مع جدولين رئيسيين هما “scores” و “items”. الجدول “scores” يحتوي على معلومات حول النقاط التي حصل عليها الأفراد في عناصر محددة، في حين يحتوي الجدول “items” على معلومات حول الوزن المرتبط بكل عنصر.

في الجدول “scores”، يتم تحديد معرّف فريد (“id”) لكل صف، بالإضافة إلى اسم الفرد (“name”) والنقاط التي حصل عليها (“score”) ومعرّف العنصر (“item_id”). أما في الجدول “items”، يتم تحديد معرّف فريد لكل عنصر (“id”) بالإضافة إلى وزن العنصر (“weight”).

يستخدم الاستعلام الذي قدمته في الرد السابق عمليات الانضمام (JOIN) لربط البيانات في الجدولين معًا باستخدام معرف العنصر (“item_id”). يتم أيضًا استخدام دالة التجميع (SUM) لحساب مجموع الأوزان التي تحمل نفس الاسم في الجدول “items”.

الجمع بين هذه المعلومات يُنتِج نتائج تحتوي على القيم المحسوبة للعمود “last_score” وفقًا للمعادلة المطلوبة في السؤال، حيث يتم ضرب نقاط كل فرد في وزن العنصر الخاص به ويتم قسم الناتج على مجموع الأوزان للعناصر التي تحمل نفس الاسم.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!