اذهب إلى المحتوى
  • 0

كيف أستخرج القيمة الوسطى لمجموعة قيم على Mysql؟

Simoh

السؤال

أريد حساب الوسيط أو القيمة الوسطى للعناصر الموجودة بجدول على Mysql يتوفر على مجموعة قيم عددية، وهذا هو الجدول:

id | val
--------
 1    4
 2    7
 3    2
 4    2
 5    9
 6    8
 7    3

لكن عند استعمال دالة avg حصلت على القيمة 5، مع العلم أن القيمة الوُسطى لحقل val هي 4؟

القيم : 2 2 3 4 7 8 9، تكون القيمة الوُسطى إذن هي 4.

كيف أتمكن من استخراج القيمة الوسطى؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

للحصول على القيمة الوُسطى وليس المعدّل -avg- لمجموع الأعداد، نحتاج أولا لترتيب الأعداد تصاعديا، ثم حساب عدد الأعداد وإضافة 1 للقيمة المحصّل عليها، وفي الأخير قسمة العدد على 2:

SELECT avg(t1.val) as median_val FROM (
SELECT @rownum:=@rownum+1 as `row_number`, d.val
  FROM data d,  (SELECT @rownum:=0) r
  WHERE 1
   
  ORDER BY d.val
) as t1, 
(
  SELECT count(*) as total_rows
  FROM data d
  WHERE 1
   ) as t2
WHERE 1
AND t1.row_number in ( floor((total_rows+1)/2), floor((total_rows+2)/2) );

والسطرين التاليين يوضّحان بشكل عملي، تفسير الطريقة:

SELECT floor((3+1)/2),floor((3+2)/2);#total_rows is 3, so avg row_numbers 2 and 2
SELECT floor((4+1)/2),floor((4+2)/2);#total_rows is 4, so avg row_numbers 2 and 3
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...