【发布时间】:2014-02-21 12:47:57
【问题描述】:
考虑一个账户和存款数据库:
CREATE TABLE accounts (
id int not null primary key,
name varchar(63)
);
CREATE TABLE deposits (
id int not null primary key,
account int references accounts(id),
dollars decimal(15, 2),
status enum('pending','complete')
);
insert into accounts values
(0, 'us'),
(1, 'europe'),
(2, 'asia');
insert into deposits values
(0, 0, 10, 'pending'),
(1, 0, 20, 'complete'),
(2, 1, 100, 'complete'),
(3, 1, 200, 'pending'),
(4, 1, 300, 'complete'),
(5, 2, 1000, 'pending');
我想得到每个银行所有complete 存款的总数,这是预期的结果:
+--------+-----+
| us | 20 |
| europe | 400 |
| asia | 0 |
+--------+-----+
这是我尝试过的 SQL,但它没有按预期工作:
SELECT
a.name, SUM(d.dollars)
FROM
accounts a
INNER JOIN
deposits d ON (a.id = d.account AND d.status='complete');
这是它给出的结果:
+--------+-----+
| us | 420 |
+--------+-----+
Here is an SQLfiddle的当前代码。
我做错了什么,我怎样才能得到预期的金额?
【问题讨论】:
-
你忘了按银行分组