PDA

View Full Version : میانگین گرفتن از یک ستون در DataTable



mr.siahatgar
جمعه 10 اردیبهشت 1395, 03:59 صبح
سلام من یک دیتا تیبل دارم که میخوام مثلا از یک ستون خاصش میانگین بگیرم و یا ماکزیمم و مینمم ان ستون مشخص کنم چکار باید کنم
سوال دوم : تگر همین کار را برای یک دیتا گرید ویو بخوام انجام بدم باید چکار کنم یعنی بخوام ماکزیمم یا میننم یا میانگین یک ستون در دیتا گرید ویو مشخص کنم حالا یا در اخز دیتا گرید ویو نشان بده و یا در یک تکس باکس
ممنون از شما

mrprestige
جمعه 10 اردیبهشت 1395, 14:43 عصر
سلام من یک دیتا تیبل دارم که میخوام مثلا از یک ستون خاصش میانگین بگیرم و یا ماکزیمم و مینمم ان ستون مشخص کنم چکار باید کنم
سوال دوم : تگر همین کار را برای یک دیتا گرید ویو بخوام انجام بدم باید چکار کنم یعنی بخوام ماکزیمم یا میننم یا میانگین یک ستون در دیتا گرید ویو مشخص کنم حالا یا در اخز دیتا گرید ویو نشان بده و یا در یک تکس باکس
ممنون از شما

سلام دوست من ، در جواب سوال اول شما باید بگم میتونی از کوئری که براتون نوشتم برای حداکثر و حداقل مقدار یک ستون استفاده کنی


SELECT MAX("نام ستون ") FROM نام جدول



SELECT MIN("نام ستون ") FROM نام جدول

و در جواب سوال دومت هم باید بگم میتونی برای گرفتن میانگین از یک ستون ، توی کنترل مورد نظرت این خط کد رو بنویسی


double AVG = 0;
Double result = 0;
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
if (row.Cells[1].Value != null)
{
try
{
result += Convert.ToDouble(row.Cells[شماره ستون].Value);
}
catch { }
}
}
AVG = result/dataGridView3.Rows.Count-1;


label1.Text =Math.Round(AVG,2).ToString();





امیدوارم همیشه موفق باشی دوست عزیز .

khokhan
جمعه 10 اردیبهشت 1395, 14:48 عصر
سلام من یک دیتا تیبل دارم که میخوام مثلا از یک ستون خاصش میانگین بگیرم و یا ماکزیمم و مینمم ان ستون مشخص کنم چکار باید کنم
سوال دوم : تگر همین کار را برای یک دیتا گرید ویو بخوام انجام بدم باید چکار کنم یعنی بخوام ماکزیمم یا میننم یا میانگین یک ستون در دیتا گرید ویو مشخص کنم حالا یا در اخز دیتا گرید ویو نشان بده و یا در یک تکس باکس
ممنون از شما

برا میانگین AVG برای جمع sum البته بایستی یه ستون به صورت Runtime بسازی و نتیجه محاسبات رو بریزی توش :

dt.Columns.Add(Columns.FiveSecBeforePnL, typeof(double));

foreach(DataRow row in dt.Rows)
{
row[Columns.FiveSecBeforePnL] = some value;
}

double avgFiveSbefore;
avgFiveSbefore = (double)dt.Compute("AVG(5sBeforePnL)", "");

با دستورات linq هم می تونی :

double avgFiveSbefore = dt.AsEnumerable()
.Average(r =>
r.Field<double>(Columns.FiveSecBeforePnL));

mr.siahatgar
جمعه 10 اردیبهشت 1395, 16:57 عصر
سلام دوست من ، در جواب سوال اول شما باید بگم میتونی از کوئری که براتون نوشتم برای حداکثر و حداقل مقدار یک ستون استفاده کنی


SELECT MAX("نام ستون ") FROM نام جدول



SELECT MIN("نام ستون ") FROM نام جدول

و در جواب سوال دومت هم باید بگم میتونی برای گرفتن میانگین از یک ستون ، توی کنترل مورد نظرت این خط کد رو بنویسی


double AVG = 0;
Double result = 0;
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
if (row.Cells[1].Value != null)
{
try
{
result += Convert.ToDouble(row.Cells[شماره ستون].Value);
}
catch { }
}
}
AVG = result/dataGridView3.Rows.Count-1;


label1.Text =Math.Round(AVG,2).ToString();





امیدوارم همیشه موفق باشی دوست عزیز .
ممنون دوست خوبم اما دیتا بیل من از اس کیو ال نیست یه سری اطلاعات هست که از دیتا گرید میگیره و پر میشه فکر نکنم با کد
SELECT MAX("نام ستون ") FROM نام جدول بتونم انجامش بدم

mrprestige
شنبه 11 اردیبهشت 1395, 14:53 عصر
ممنون دوست خوبم اما دیتا بیل من از اس کیو ال نیست یه سری اطلاعات هست که از دیتا گرید میگیره و پر میشه فکر نکنم با کد
SELECT MAX("نام ستون ") FROM نام جدول بتونم انجامش بدم

خب دوست من اگه شما از SQL استفاده نمیکنید پس از این کدی که برات نوشتم استفاده کن این کد بزرگترین (Maximum) مقدار ستون مورد نظر رو برمیگردونه

double Max = 0;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
if (row.Cells[0].Value != null)
{
try
{
if (Convert.ToDouble(row.Cells[0].Value) > Max)
Max = Convert.ToDouble(row.Cells[1].Value);
}
catch { }
}
label1.Text = Max.ToString();
}


و برای کوچکترین ( Minimum) مقدار یک ستون هم کافیه بجای علامت کوچکتر ( < ) تبدیل به بزرگتر کنید (>) استفاده کنید .


پیروز و موفق باشید .