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 に答える