MySQL技术问询:计算车辆维护里程的整除次数及余数
MySQL计算车辆维护次数与剩余里程的实现方案
没问题,这个需求在MySQL里用基础的算术运算符和函数就能轻松搞定,我给你一步步拆解实现逻辑:
核心计算思路
你的需求本质是两个基础数学运算:
- 已完成的维护次数:总里程 整除 维护周期
- 距离下次维护的剩余里程:总里程 取模 维护周期(或总里程减去「次数×周期」)
具体SQL实现
假设你的车辆数据表结构如下(可根据实际字段名调整):
CREATE TABLE vehicles ( id INT PRIMARY KEY AUTO_INCREMENT, vehicle_name VARCHAR(50) NOT NULL, total_km INT NOT NULL, -- 总里程(单位:公里) total_miles DECIMAL(10,1) NOT NULL -- 总里程(单位:英里) );
完整查询语句
SELECT vehicle_name, -- 公里维度的维护计算 total_km, total_km DIV 20000 AS completed_km_maintenances, -- 已完成的公里维护次数 total_km MOD 20000 AS remaining_km, -- 距离下次维护的剩余公里数 -- 英里维度的维护计算 total_miles, FLOOR(total_miles / 12000) AS completed_miles_maintenances, -- 已完成的英里维护次数 ROUND(total_miles - (FLOOR(total_miles / 12000) * 12000), 1) AS remaining_miles, -- 剩余英里数(保留1位小数) -- 自定义维护提醒(可调整阈值,比如剩余1000公里/621英里以内触发提醒) CASE WHEN remaining_km < 1000 THEN '⚠️ 需要尽快维护' ELSE '✅ 无需立即维护' END AS km_maintenance_status, CASE WHEN remaining_miles < 621 THEN '⚠️ 需要尽快维护' ELSE '✅ 无需立即维护' END AS miles_maintenance_status FROM vehicles;
关键语法解释
DIV:MySQL专属的整数除法运算符,直接返回商的整数部分,完美适配整数类型的公里数计算(比如198255 DIV 20000 = 9)。MOD:取模运算符,返回除法后的余数,也就是剩余里程(比如198255 MOD 20000 = 18255)。FLOOR():向下取整函数,因为英里数通常是小数,用它能准确得到整数的维护次数(比如123189.9 / 12000 ≈10.2658,FLOOR后得到10)。ROUND():可选函数,用于对剩余英里数保留指定小数位,让结果更整洁。
验证你的示例
对于车辆A的198255KM/123189.9Miles,执行上述SQL后会得到:
- 公里维护次数:9次,剩余里程:18255KM
- 英里维护次数:10次,剩余里程:3189.9Miles
完全匹配你给出的预期结果。
内容的提问来源于stack exchange,提问作者tranquilX
相关产品推荐
相关产品推荐

