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

如何用SQL按日计算YTD的日均、最小值及最大值?

实现Science科目YTD日均、日最小/最大统计的SQL方案

首先,你需要先按日期分组统计每天的Science记录数,再基于这些每日数据计算YTD的目标指标。用CTE(公共表表达式)分步实现,逻辑更清晰:

完整查询代码

-- 第一步:统计每日Science的记录数
WITH daily_science_stats AS (
    SELECT
        -- 处理日期格式,转换为标准日期类型确保分组准确
        CAST(REPLACE(Study_Date, '\', '/') AS DATE) AS study_day,
        COUNT(ID) AS daily_count
    FROM your_table
    WHERE
        Subject = 'Science'
        -- 注意:示例数据是2018年,原查询写的2022,记得改成实际需要的年份
        AND YEAR(CAST(REPLACE(Study_Date, '\', '/') AS DATE)) = 2018
    GROUP BY CAST(REPLACE(Study_Date, '\', '/') AS DATE)
)
-- 第二步:基于每日统计计算YTD指标
SELECT
    'Science' AS Subject,
    -- 日均数量,保留2位小数,可按需调整精度
    ROUND(AVG(daily_count), 2) AS avg_daily_ytd,
    MIN(daily_count) AS min_daily_ytd,
    MAX(daily_count) AS max_daily_ytd,
    SUM(daily_count) AS total_ytd_count -- 保留你原查询需要的YTD总数
FROM daily_science_stats;

关键细节说明

  • 日期格式处理:你的Study Date是带反斜杠的字符串,需要先替换为斜杠再转成日期类型,避免因格式问题导致分组错误。如果数据库中Study Date本身就是日期类型,直接用Study_Date即可,无需转换。
  • 数据库适配:
    • 若使用MySQL,日期转换可替换为STR_TO_DATE(Study_Date, '%m\\%d\\%Y')
    • 若使用SQL Server,用CONVERT(DATE, Study_Date, 101)即可(101对应MM/DD/YYYY格式,反斜杠不影响转换)
  • 指标逻辑:
    • AVG(daily_count):统计所有有Science记录日期的日均数量
    • MIN/MAX(daily_count):直接取单日Science记录数的最小/最大值
    • 如果需要包含无Science记录的日期(统计为0),需要先生成全年日期序列再左连接当前统计结果,不过从你的需求示例看,无需此步骤。

内容的提问来源于stack exchange,提问作者jnic

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:01:20