特殊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>