特殊Select语句(sqlite) 表:“用户” -用户名-
(每个用户标识都是唯一的)特殊Select语句(sqlite) 表:“用户” -用户名-,sqlite,select,Sqlite,Select,(每个用户标识都是唯一的) 表:“金钱支出” -用户ID-金钱支出- (一个用户ID可能有多个具有不同“金钱支出”的条目) 现在,我需要一个用户花费的总金额 最后,我需要以下观点: -姓名-金额(花费的金钱)- 哪个语句可以给出这个结果?您可以使用聚合函数并通过以下方式分组: select u.name, sum(ms.money) from user u, money_spend ms where u.userid = ms.userid group by u.userid 请注意,
-用户ID-金钱支出- (一个用户ID可能有多个具有不同“金钱支出”的条目) 现在,我需要一个用户花费的总金额 最后,我需要以下观点:
-姓名-金额(花费的金钱)-
哪个语句可以给出这个结果?您可以使用聚合函数并通过以下方式分组:
select u.name, sum(ms.money)
from user u, money_spend ms
where u.userid = ms.userid
group by u.userid
请注意,此处假设每个用户在money_支出表中至少有一行:
由于聚合函数的工作方式,您可以为每个用户设置一个值为0的money_-spend表,这样您就不会遇到任何问题:)因为您可能有一些用户在money_-spend表中没有任何条目,您需要一个外部联接:
select n.name, sum(ms.money)
from user n
left outer join money_spend ms on (n.userid = ms.userid)
group by n.name
编辑:为了确保这一切都有效,我刚刚试过这个
create table user(userid, name);
insert into user values (1, 'user1');
insert into user values (2, 'user2');
insert into user values (3, 'user3');
create table moneyspend(userid, amount);
insert into moneyspend values (1,10);
insert into moneyspend values (1,20);
insert into moneyspend values (2,100);
select * from user;
select * from moneyspend;
select u.name, sum(m.amount)
from user u
left outer join moneyspend m on (u.userid = m.userid)
group by u.name;
drop table user;
drop table moneyspend;
控制台输出如下(testSQLite是我的测试数据库,testsql.sql是上面的)
到目前为止你得到了什么?您是否首先尝试获取每个用户ID的总和?你知道怎么加入吗?
hols-Mac:div4 hol$ sqlite3 -init testsql.sql testSQLite
-- Loading resources from testsql.sql
1|user1
2|user2
3|user3
1|10
1|20
2|100
user1|30
user2|100
user3|
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite>