0

我正在尝试在 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
4

1 回答 1

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 来获取行的子集)。

于 2012-09-14T19:43:06.230 回答