我试图在我的数据库中平均消耗燃料。但我不知道该怎么做。 这是一个小解释: 我有2张桌子:
Tabe CONSUM:
ID CARID LI KM DATETIME
------------------------------------------------
6 9 70.17 174857 2015-02-10 10:58:51
5 5 51.00 154785 2015-02-09 19:11:19
4 8 99.44 485627 2015-02-09 18:45:48
3 9 47.78 174114 2015-02-09 17:21:32
2 8 24.74 484175 2015-02-07 12:28:37
1 5 89.65 154201 2015-02-02 22:01:14
Table CARS
CARID avglasttwo
-----------------
5 8.73
8 6.84
9 10.58
...
*数据为例。
我需要在表COSUM中使用相同的CAREID来表示最后2 KM行的总和(例如CARID 9): km 174857 - km 174114 = 743然后使用最后插入的LI 70.17(对于CARID 9),在该总和70.17 /(743/100)之后并将其插入表CARS avglasttwo,卡ID为9.并为所有CARID执行此操作。 此外,每次新输入后,都需要刷新avglasttwo。
我目前手动执行此操作并花费了大量时间。 我非常感谢你的帮助。
答案 0 :(得分:1)
试试这个。应返回两条最新记录的carID,max LI和两条记录的KM差异。
SELECT c.CARID, c.lastLI AS maxLI, MAX(c.KM)-MIN(c.KM) AS diff
FROM (
SELECT CONSUM.*, lastTwo.lastLI
FROM CONSUM
JOIN
(SELECT CARID,
SUBSTRING_INDEX(GROUP_CONCAT(LI ORDER BY ID DESC), ',', 1) AS lastLI,
SUBSTRING_INDEX(GROUP_CONCAT(ID ORDER BY ID DESC), ',', 2) AS twoLatest
FROM CONSUM
GROUP BY CARID) lastTwo ON CONSUM.CARID=lastTwo.CARID
AND FIND_IN_SET(CONSUM.ID, lastTwo.twoLatest)>0) c
GROUP BY c.CARID
现在您可以使用maxLI和diff数据插入行
三个子查询....不是最好的解决方案。 但如果你坚持继续......