我正在尝试使数据库中的平均燃料消耗。但是我不知道该怎么做。
这是一个小解释:
我有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数据插入行

三个子查询...。不是最佳解决方案。
但是如果您坚持要进行.....

10-05 19:41