You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取含日期与计数的一周全量数据(含零计数日期)

解决一周统计数据缺失零值日期的问题

核心思路

先生成目标时间段内的完整日期列表,再将该列表与现有统计数据做左连接,确保无数据的日期也能以userCount=0的形式返回。

具体实现

1. 生成一周完整日期范围

先创建包含过去7天所有日期的集合:

// dt为一周的起始日期,生成从dt到dt+6天的所有日期
var dateRange = Enumerable.Range(0, 7)
    .Select(i => dt.Date.AddDays(i))
    .ToList();

2. 获取原有统计数据(保留原查询逻辑)

先执行你原有的查询,获取有数据的日期统计:

var existingStats = dbContext.MtMUsers.Join(dbContext.MtLogRegistrationAudits,
    U => U.EmployeeId,
    Ru => Ru.UserId,
    (U, Ru) => new { U = U, Ru = Ru })
    .Where(x => x.Ru.Status != null && 
           x.Ru.Status.ToLower() == "success" &&
           x.Ru.LoggedDate.Value.Date >= dt.Date &&
           x.Ru.LoggedDate.Value.Date <= dt.AddDays(6).Date &&
           x.U.IsMobileUser != 0 && 
           (request.clientIds == null || 
            request.clientIds.Count == 0 ||
            request.clientIds.Contains(x.U.ClientId)) &&
           (request.assetIds == null || 
            request.assetIds.Count == 0 ||
            request.assetIds.Contains(x.U.AssetId)) &&
           ((request.startDate == null && request.endDate == null) ||
            (request.startDate <= x.U.CreatedDate && request.endDate >= x.U.CreatedDate)))
    .GroupBy(g => g.Ru.LoggedDate.Value.Date)
    .Select(s => new lastWeekStatisticsObject
    {
        date = s.Key,
        userCount = s.Count()
    })
    .ToList();

3. 左连接合并数据

将完整日期列表与现有统计数据左连接,填充零值:

var lastWeekRegisterStatistic1 = dateRange
    .GroupJoin(existingStats,
        date => date,
        stat => stat.date.Date, // 确保按日期部分匹配,避免时间干扰
        (date, matchingStats) => new lastWeekStatisticsObject
        {
            date = date,
            userCount = matchingStats.FirstOrDefault()?.userCount ?? 0
        })
    .OrderBy(o => o.date)
    .ToList();

效果说明

修改后返回的结果会包含一周7天的所有日期,无数据的日期userCount会被设为0,示例返回结构如下:

"lastWeekStatistics": [
    {
        "date": "2022-11-07T00:00:00",
        "userCount": 0
    },
    {
        "date": "2022-11-08T00:00:00",
        "userCount": 0
    },
    {
        "date": "2022-11-09T00:00:00",
        "userCount": 0
    },
    {
        "date": "2022-11-10T00:00:00",
        "userCount": 166
    },
    {
        "date": "2022-11-11T00:00:00",
        "userCount": 132
    },
    {
        "date": "2022-11-12T00:00:00",
        "userCount": 17
    },
    {
        "date": "2022-11-13T00:00:00",
        "userCount": 0
    }
]

内容的提问来源于stack exchange,提问作者MOHAMED YUSUF K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:05:22