我正在尝试使数据库中的平均燃料消耗。但是我不知道该怎么做。
这是一个小解释:
我有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
...
*以数据为例。
我需要使用相同的CAREID来在表COSUM中的最后2公里行的总和(例如CARID 9):
km 174857-km 174114 = 743,然后使用最后插入的LI 70.17(对于CARID 9),然后使用总和70.17 /(743/100),并将其插入表ID为9的CARS avglasttwo中。并对所有CARID执行此操作。
同样,在每个新输入之后,也必须刷新avglasttwo。
我目前是手动执行此操作,因此需要花费大量时间。
我将非常感谢您的帮助。
最佳答案
尝试这个。应该返回carID,两个最新记录的最大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数据插入行
三个子查询...。不是最佳解决方案。
但是如果您坚持要进行.....