繁体   English   中英

几行之间的SQLite SUM()

[英]SQLite SUM() between several rows

我需要一些关于Android应用程序中的SUM功能的帮助。 我有一个类似于以下内容的表:

在此输入图像描述

我需要在最后两个记录Notes和最后一个记录之间使用Note来SUM数量。 我需要总计31,32和33行的数量。它会返回90.我试过了

SELECT Sum(QUANTITY) FROM fuel_table WHERE NOTE!='' ORDER BY ID DESC

但它会返回带有注释的所有数量的SUM。

我倾向于将这个问题说成:将所有行中的数量加起来,这些行中有一个音符“前面”。 这表明:

select sum(quantity)
from (select ft.*,
             (select count(*)
              from fuel_table ft2
              where ft2.note = 'Yes' and ft2.id >= ft.id
             ) as numNotesAhead
      from fuel_table ft
     ) ft
where numNotesAhead = 1;
WITH    max_id_with_note AS
        (
        SELECT  MAX(ID) AS max_id
        FROM    YourTable
        WHERE   IFNULL(note, '') <> ''
        )
,       previous_max_id_with_note AS
        (
        SELECT  max(ID) as max_id
        FROM    YourTable
        WHERE   IFNULL(note, '') <> ''
                AND ID < (SELECT max_id FROM max_id_with_note)
        )
SELECT  SUM(Quantity)
FROM    YourTable
WHERE   (SELECT max_id FROM previous_max_id_with_note)
        < ID and ID <= 
        (SELECT max_id FROM max_id_with_note)

SQL Fiddle的例子。

首先选择几个ROW并从此选择查询SUM()。 在你的情况下它看起来像这样:

Select SUM(t1.QUANTITY) FROM (SELECT QUANTITY from fuel_table WHERE NOTE!='' ORDER BY ID limit 2) as t1

将您的查询更改为

SELECT Sum(QUANTITY) FROM fuel_table ORDER BY ID DESC LIMIT 3

使用子查询IDLIMIT 3按顺序获取QUANTITY ,如您想要的最后3行,并将SUM()放入结果数量...

SELECT SUM(QUANTITY) FROM (SELECT QUANTITY FROM fuel_table ORDER BY ID DESC LIMIT 3);

我像你一样创建了表并进行测试。 安道尔有好主意,但犯了一些错误!

WITH    max_id_with_note AS
        (
        SELECT  MAX(ID) AS max_id
        FROM    fuel_table
        WHERE   Note <> ''
        )
,       previous_max_id_with_note AS
        (
        SELECT  max(ID) as max_id
        FROM    fuel_table
        WHERE   Note <> ''
                AND ID < (SELECT max_id FROM max_id_with_note)
        )
SELECT  SUM(Quantity)
FROM    fuel_table
WHERE          (SELECT max_id FROM previous_max_id_with_note)
        < id and id <= (SELECT max_id FROM max_id_with_note)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM