gpt4 book ai didi

mysql - 如何对一列具有相同 ID 的最后两行求和,然后再次求和

转载 作者:行者123 更新时间:2023-11-29 12:20:56 24 4
gpt4 key购买 nike

我正在尝试使我的数据库中的燃料消耗达到平均水平。但我不知道该怎么做。这是一个小解释:我有 2 张 table :

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) 并将其插入卡 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 数据来插入行

三个子查询......不是最好的解决方案。但如果你坚持要进行……

关于mysql - 如何对一列具有相同 ID 的最后两行求和,然后再次求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29018657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com