gpt4 book ai didi

mysql - 多行之间的复杂 SQLite 或 SQL SUM()

转载 作者:行者123 更新时间:2023-11-29 11:44:40 25 4
gpt4 key购买 nike

我需要扩展这个问题:SQLite SUM() between several rows之前的表是 previous table
查询是:

SELECT Sum(SERVICE)
FROM (
SELECT ft.*, (
SELECT count(*)
FROM fuel_table ft2
WHERE ft2.note='Your tank was full up.' and ft2.id>=ft.id)
AS numNotesAhead
FROM fuel_table ft)
AS ft
WHERE numNotesAhead=1

但现在我的燃料表被分割,看起来像:new base
我试过:

SELECT Sum(fuel_table.SERVICE)
FROM (
SELECT ft.*, (
SELECT count(*)
FROM fuel_table ft2
LEFT JOIN note_table ON fuel_table.EnterId = note_table.EnterId
WHERE ft2.note='Your tank was full up.' and ft2.id>=ft.id)
AS numNotesAhead
FROM fuel_table ft)
AS ft
WHERE numNotesAhead=1

但它不起作用。我的应用程序刚刚停止。
*注意燃料表名称中有“_”。

最佳答案

所以这里有两个问题 - 一是表的连接,这与您之前的问题不同。第二个问题是对正确的值进行适当的求和,这已经在这里得到了很好的回答:SQLite SUM() between several rows .

那么,让我们看看 JOIN。

由于 Fuel_table 的记录数量较多,我们预计与 note_table 的所需 JOIN 会出现一些“NULL”值。 (而且我们不会丢失 Fuel_table 中的任何记录,因为我们是在 EnterId 上加入的,所以我们不需要 FULL OUTER JOIN)。这意味着(对于 LEFT JOIN),我们希望 Fuel_table 位于左侧:

SELECT f.id, f.service, f.enterid, n.note
FROM fuel_table f
LEFT JOIN note_table n
ON f.enterid = n.enterid

这将为我们提供输出:

id    service    enterid    note
----------------------------------
2 50 25 Yes
3 20 26 NULL
4 20 35 Yes
8 30 36 NULL
9 15 37 NULL
10 20 42 Yes

到目前为止,一切顺利。

现在 - 而不是考虑它 - 我只是查看了上一个问题的答案,并从这个答案中替换了fuel_table中的这个子查询:SQLite SUM() between several rows这是一个非常好的答案,我不能将其任何部分归功于以下内容......

将它们放在一起,您会得到丑陋但实用的查询:

SELECT SUM(fq.service) AS total
FROM
(SELECT fq2.*,
(SELECT COUNT(*)
FROM (SELECT f.id, f.service, f.enterid, n.note
FROM fuel_table f
LEFT JOIN note_table n
ON f.enterid = n.enterid) fq1
WHERE fq1.note = 'Yes' AND fq1.id >= fq2.id) AS numNotesAhead
FROM
(SELECT f.id, f.service, f.enterid, n.note
FROM fuel_table f
LEFT JOIN note_table n
ON f.enterid = n.enterid) fq2) fq
WHERE numNotesAhead = 1

返回输出:

total
------
65

关于mysql - 多行之间的复杂 SQLite 或 SQL SUM(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162118/

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