如何在sqlite中获得运行总和?

时间:2012-09-14 17:45:07

标签: sql sqlite

我正试图在sqlite中获得一笔运行金额。现在我有:

SELECT 
    type, 
    count, 
    SUM(count) as startIndex 
FROM 
    (
        SELECT 
            things.type, 
            COUNT(things.name) as count 
        FROM 
            things 
            INNER JOIN thingGroups 
            ON thingID = things.id 
            INNER JOIN groups 
            ON groups.id=thingGroups.groupID 
        WHERE 
            groups.name='Space' 
        GROUP BY things.type 
        ORDER BY type
    ) 
GROUP BY type, count

这给了我:

Name A, 2, 2
Name B, 3, 3
Name C, 3, 3

我正在寻找:

Name A, 2, 0
Name B, 3, 2
Name C, 3, 5

1 个答案:

答案 0 :(得分:0)

您可以使用相关子查询执行此操作:

select TYPE, COUNT,
       (select count(*)
        from things t2 INNER JOIN
             thingGroups 
             ON thingID = t2.id INNER JOIN
             groups 
             ON groups.id=thingGroups.groupID 
        WHERE groups.name='Space' and
              t2.type < things.type
       ) as cumsum
from (SELECT things.type, COUNT(things.name) as count 
      FROM things INNER JOIN
           thingGroups 
           ON thingID = things.id INNER JOIN
           groups 
           ON groups.id=thingGroups.groupID 
       WHERE groups.name='Space' 
       GROUP BY things.type
      ) t
order by type

顺便说一句,order by应该总是在最外面的查询中(除非你使用某种限制或top来获取行的子集)。