PDA

View Full Version : سوال: Query میانگین فاصله زمانی در جدول



tolid123456789
سه شنبه 19 تیر 1397, 12:01 عصر
سلام
من یک برنامه در C# دارم می نویسم که در اون از SQL قراره یک عدد خروجی بگیرم.
من جدول زیر رو در اختیار دارم:


ردیف
تاریخ خرابی
مدت زمان خرابی


1
2017/07/12
7


2
2017/07/20
12


3
2017/07/22
5


4
2017/08/01
2


5
2017/08/20
16



من می خوام از جدول بالا به دو عد برسم:
1-میانگین فاصله ی بین خرابی ها:
- فاصله تاریخی بین اولین خرابی و دومین خرابی که میشه 2017/07/12-2017/07/20=8
- فاصله تاریخی بین دومین خرابی و سومین خرابی که میشه 2017/07/20-2017/07/22=2
- فاصله تاریخی بین سومین خرابی و چهارمین خرابی که میشه 2017/07/22-2017/08/01=9
- فاصله تاریخی بین چهارمین خرابی و پنجمین خرابی که میشه 2017/08/01-2017/08/20=19

میانگین فاصله ی بین خرابی ها = 4/(19+9+2+8)= 9.5

2-میانگین مدت زمان خرابی:

میانگین فاصله ی بین خرابی ها = 5/(16+2+5+12+7)= 8.4


اساتید و دوستان محترم لطفا راهنمایی بفرمایید.

ممنون

mr.sirwan
سه شنبه 19 تیر 1397, 12:57 عصر
مسئله محاسبه میانگین که با یه حلقه for ساده قابل حل هست، مسئله فاصله تاریخی هم با حلقه for به اینصورت باید حل کنین:
اول تمامی اون سطر هایی که لازم دارین رو واکشی میکنین از دیتابیس و داخل دیتاتیبل یا لیست یا هرچیزی که مدنظرتون هست قرار میدین، فیلدهای تاریخ هر سطری که واکشی شده رو باید به datetime تبدیل کنین بعد داخل یه حلقه از اندیس 1 (و نه صفر) شروع کنین به پیمایش، داخل حلقه فیلد تاریخ سطر اندیس جاری رو با فیلد تاریخ یه سطر قبل (مثلا اول کار اندیس جاری 1 و اندیس سطر قبل میشه صفر) به اینصورت تفریق کن تا فاصله تاریخی واسه هر دو سطر بدست بیاد:
(date1 - date2).TotalDays;

تو همون حلقه میتونی جمع مقادیر رو هم بدست بیاری که بتونی بعدا میانگین رو محاسبه کنی، حالا کد حلقه به این شکل درمیاد:
int sum = 0;
for(int i=1; i<recordsRowCount; i++)
{
sum += ((DateTime)dataTable[i][2] - (DateTime)dataTable[i-1][2]).TotalDays;
}

float AvgDaysFailure = sum / recordsRowCount;

متغیر recordsRowCount تعداد سطرهای واکشی شده از دیتابیسه