[英]c# / LINQ - Average the number of enquiries per day, week and month over a time period
我有以下LINQ查詢:
model.TotalEnquiries = enquiriesDbContext.Enquiries.Where(x => x.CustomerAccountNumber == formModel.CustomerAccNo)
.Where(x => x.EnquiryDate >= startDate).Where(x => x.EnquiryDate <= endDate).Count();
這可以正常工作,因為它將在兩個指定的時間段之間返回值60,但是我想做的是找到該時間段內每天,每周和每月的平均查詢次數,是否可以LINQ?
好了,既然您自己指定了期限,這很簡單:
var averagePerDay = total / (endDate - startDate).TotalDays;
編輯:我看到你正在改變球門柱...如果你想在一個查詢中獲得不同日期范圍的平均值,那將非常棘手。 就個人而言,除非有大量數據,否則我可能會獲取適當范圍內的所有查詢日期,然后在本地進行處理,這可能比嘗試盡量減少SQL查詢的數量同時保持其智能還容易。 。
從概念上講,在任意時期內按月進行平均是很棘手的:(例如)2月16日至4月7日有多少個月? 涉及三個不同的月份長度。
當然,您可能會說“每天平均,按月分組”(例如,1月的平均天數,2月的平均天數”等),這是完全不同的,這就是為什么您需要精確了解需求的原因。
您需要使用GROUP BY按日期對條目進行分組, 此處記錄 (帶有示例)
否則,您需要通過SUM / COUNT進行平均值計算,這會使您對分布,趨勢等情況的了解減少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.