1

次の LINQ クエリがあります。

model.TotalEnquiries = enquiriesDbContext.Enquiries.Where(x => x.CustomerAccountNumber == formModel.CustomerAccNo)
                   .Where(x => x.EnquiryDate >= startDate).Where(x => x.EnquiryDate <= endDate).Count();

これは、指定された 2 つの期間の間で、たとえば 60 の値を返すので問題なく動作しますが、私がやりたいのは、この期間の 1 日、1 週間、および 1 か月あたりの平均問い合わせ数を見つけることです。リンク?

4

2 に答える 2

7

期間を自分で指定したことを考えると、簡単です。

var averagePerDay = total / (endDate - startDate).TotalDays;

編集: ゴールポストを変更しているようです... 1 つのクエリで異なる日付範囲の平均を取得したい場合は、注意が必要です。個人的には、膨大な量のデータがない限り、適切な範囲内のすべての照会日付をフェッチしてから、ローカルで処理することになるでしょう。これは、SQL クエリの数を最小限に抑えながら、それらを賢く維持しようとするよりも簡単である可能性があります。 .

任意の期間を月単位で平均化するのは、概念的に難しいです。(たとえば) 2 月 16 日から 4 月 7 日までの期間は何月ですか? 3 つの異なる月の長さが含まれます。

もちろん、「日ごとの平均、月ごとのグループ化」(例: 1 月の日ごとの平均、2 月の日ごとの平均) という意味はまったく異なる場合があります。

于 2012-05-09T12:24:56.787 に答える
0

GROUP BY を使用して、エントリを日ごとにグループ化する必要があります。ここに記載されています(サンプル付き) 。

それ以外の場合は、SUM/COUNT を介して平均を実行することで解決する必要があります。これにより、分布や傾向などについての洞察が少なくなります。

于 2012-05-09T12:26:59.133 に答える