الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال بخصوص تقريب النسبة في الاستطلاع

بدأه كمبيوتر نت في 7 مايو 2010 · 10 رد · 1,646 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا عملت استطلاع(تصويت) في موقع

المشكلة هي اني لم اظهرت النسبة (اي نسبة التصويت لكل خيار )تظهر ارقام عشرية كثيرة بعد الفاصلة مثل::

النسبة 77.32546476 اي يقرا كل الارقام بعد الفاصلة ؟ فكيف اجعله فقط يقرا رقمين او يقرب الى رقمين

مثل

77.33 او 77.32

انا جربت الدالة round لكنها مانفعت ابدا ؟؟؟ وايضا الدالة mid كذلك لم تنفع؟؟

فهل هناك طريقة لذلك؟؟

منتظر ردودكم

#3

السلام عليكم

اشكرك اخي طارق تجاوبك معاي

لكن الذي اريده هو اني فقط يقوم بتقريب الرقم 77.778547

الى هذا الرقم 77.78

وليس ازالة الاصفار!!!!

لاني اعمل استطلاع فلابد ان تظهر الكسور العشرية بعد العدد الصحيح لكن فقط يظهر منها اثنان او تقرب الى اقرب عدد ممكن

منتظر ردك

#5

السلام عليكم

جربت لمثال السابقة على هذا الــــ query لكنه اظهر لي خطأ

 cmd = new SqlCommand("select options as الخيارات,counter as عددالأصوات,convert(k ,round=(100.0*counter/(select top(1) sum(counter)"
                                          + " from asttalaview Group by questionid order by questionid desc),2),128) from asttalaview  where questionid="
                                          + "(select max(questionid) from votequestion)", con);

الخطأ هو في = بعد الدالة round

شوف اخي الخطأ

انا حاوات فيه لكن دون جدوى!!!!

منتظر ردك

#7

لكن هنا من اجل ان اظهر نسبة التصويت ....!!!

والنسبة هي عدد اصوات الخيار المختار (مثلا جيد) *100 مقسوما على مجموع الاصوات لكل الخيار ...!!!

انا طبعا اظهر ات هذا ومافيه مشاكل

المشاكل هي اني لم تظهر النسبة 77.778457 كيف فقط اجعلها 77.78

هذا مقصودي...

#8

مرة اخرى

للتقريب نستخدم Round مثل

Round(77.1233333,2)

النتيجة : 77.1200000

نحتاج الى التخلص من الاصفار التي على اليمين لذا نستخدم Convert

كمايلي

convert(money ,77.1200000 , 128)

النتيجة : 77.12

او خطوة واحدة

select convert(money , Round(77.1233333,2) , 128)

بدل الرقم 77.1233333 ضع استعلام او اي شيء تريد

مثل

select convert(money ,round (100.0* counter/(select top 1 sum(counter)

from asttalaview Group by questionid ),2),128)

لاحظ ايضا money فهذه كلمة محجوزة لنوع بيانات

#9

السلام عليكم اخي طارق

لقد جربت المثال لكن دون جدوى

طبعا النتيجة ظهرت هكذا

416447.3300

وهذه مشكلة اريد فقط الاعداد بعد الفاصلة العشرية ؟؟

لكن ظهرت الاصفار ؟؟

كيف يمكن ان ابعدها

منتظر ردك.!!!!!!!!!

#10

ببساطة

select convert(numeric(10,2),round(19.998,2),128) as result

أو بدون إستعمال التقريب

select convert(numeric(10,2),19.998) as result

تم تعديل هذه المشاركة بواسطة Sa Mu في 10 مايو 2010 في 23:30

#11

جرب هكذا

string sql=@"select options as الخيارات,counter as عددالأصوات,
convert(money ,round(100.0*counter/(select sum(counter) 
from asttalaview),2),128) from asttalaview  where questionid= 
   (select max(questionid) from votequestion)"

 cmd = new SqlCommand(sql,con);

لا لزوم للكود

Group by questionid order by questionid desc

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…