对不同表中每个值的列求和

时间:2014-12-28 00:52:02

标签: sql sqlite

给出表A和B,如下所示:

Table A       Table B
┌────┬───┐    ┌────┬─────┬───────┐
│ id │ c │    │ id │ Aid │ value │
┝━━━━┿━━━┥    ┝━━━━┿━━━━━┿━━━━━━━┥
│  1 │ 1 │    │  1 │  1  │    50 │
├────┼───┤    ├────┼─────┼───────┤
│  2 │ 0 │    │  2 │  1  │    20 │
├────┼───┤    ├────┼─────┼───────┤
│  3 │ 1 │    │  3 │  2  │    75 │
└────┴───┘    ├────┼─────┼───────┤
              │  4 │  3  │    23 │
              ├────┼─────┼───────┤
              │  5 │  3  │    17 │
              └────┴─────┴───────┘

如何获得满足条件B.value的每个A.id值的c=1列的总和?

即,以下内容:

┌────┬───────┐
│ id │ value │
┝━━━━┿━━━━━━━┥
│  1 │    70 │
├────┼───────┤
│  3 │    40 │
└────┴───────┘

我已经尝试过了

SELECT A.id as id, SUM(B.value) as value
  FROM A INNER JOIN B ON B.Aid = A.id
  WHERE c = 1

但这只会返回以下内容:

┌────┬───────┐
│ id │ value │
┝━━━━┿━━━━━━━┥
│  3 │   110 │
└────┴───────┘

1 个答案:

答案 0 :(得分:2)

我认为您需要group by

SELECT A.id as id, SUM(B.value) as value
FROM A INNER JOIN
     B
     on B.Aid = A.id
WHERE c = 1
GROUP BY A.id;