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

MySQL如何对比当日与7天前同时间同列值的增减百分比?

解决方案

你可以通过**自连接(SELF JOIN)**匹配当日与7天前同时间、同Subject、同Description的记录,进而计算数值变化百分比。以下是具体SQL语句:

SELECT
    t1.Date,
    t1.Time,
    t1.Subject,
    t1.Description AS Subject1,
    t1.Value,
    CASE
        WHEN t2.Value IS NULL THEN '?'
        ELSE CONCAT(
            ROUND(
                ((t1.Value - t2.Value) / t2.Value) * 100,
                2
            ),
            '%'
        )
    END AS Status
FROM
    your_table_name t1
LEFT JOIN
    your_table_name t2 ON
        DATE_SUB(t1.Date, INTERVAL 7 DAY) = t2.Date
        AND t1.Time = t2.Time
        AND t1.Subject = t2.Subject
        AND t1.Description = t2.Description
ORDER BY
    t1.Date, t1.Time, t1.Subject;

关键说明:

  • 自连接条件:必须同时匹配Date(当日减7天)、Time、Subject、Description,确保找到的是完全对应的7天前同一条指标记录——这大概率是你之前LEFT JOIN结果不符合预期的核心原因(关联条件不全)。
  • Status计算逻辑:
    • 若7天前无对应记录(t2.Value IS NULL),显示?;
    • 否则计算变化百分比:((当前值 - 7天前值)/7天前值)*100,用ROUND保留两位小数后拼接%符号。
  • 请将your_table_name替换为你的实际表名。

如果需要给增长数值添加+号以区分正负,可调整CASE语句:

CASE
    WHEN t2.Value IS NULL THEN '?'
    ELSE CONCAT(
        IF((t1.Value - t2.Value) >= 0, '+', ''),
        ROUND(
            ((t1.Value - t2.Value) / t2.Value) * 100,
            2
        ),
        '%'
    )
END AS Status

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:11:17