计算近10天平均汇率 从数据库取数时是否需要先排序?
汇率平均计算取数方案说明
最终结论
必须先按DATE字段降序排序后取前10条记录计算平均值,绝对不能直接依赖自增ID取最后10条记录。
原因说明
- 自增ID只能标识数据的插入顺序,和业务上的汇率日期没有强绑定关系。实际生产场景中很容易出现补录历史汇率、采集任务失败后回溯补数、数据迁移重置ID等特殊情况,这时ID更大的记录对应的日期反而更早,直接按ID取数一定会拿到非最近10天的错误数据。
- 你的需求本质是获取「日期维度最近的10天」的汇率,直接用业务日期字段
DATE作为排序依据,才是符合需求逻辑、容错性最高的实现方式,不会因为数据插入顺序的异常影响计算结果。
可选优化
如果要进一步规避数据缺失带来的误差,可以在拿到10条记录后增加一层校验:确认10条记录的最大日期是查询当日/目标日期,且10个日期的跨度符合10天的预期,避免因历史漏采导致凑不够10条有效数据的问题。
内容的提问来源于stack exchange,提问作者Adam Wróbel
相关产品推荐
相关产品推荐

