我正试图在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
答案 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来获取行的子集)。