حساب النقاط بناءً على الوزن في قواعد بيانات SQL
في هذا السياق، يمكننا استخدام استعلام SQL لحساب القيمة المطلوبة للعمود “last_score” بناءً على الجداول المتاحة. يتطلب ذلك استخدام عمليات الضرب والقسمة والجمع، بالإضافة إلى استخدام دالة التجميع (SUM) لحساب مجموع الأوزان التي تحمل نفس الاسم.
الاستعلام الذي يحقق ذلك يمكن أن يكون كالتالي:
-
تخزين Session في ASP.NET C#03/03/2024
sqlSELECT
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” وفقًا للمعادلة المطلوبة في السؤال، حيث يتم ضرب نقاط كل فرد في وزن العنصر الخاص به ويتم قسم الناتج على مجموع الأوزان للعناصر التي تحمل نفس الاسم.