怎么写这个分组sql

有两个表,一个用户充值表
CREATE TABLE user_recharge (
user_id int(10) NOT NULL DEFAULT '0' COMMENT '用户ID',
amount int(10) NOT NULL DEFAULT '0' COMMENT '充值金额',
create_time datetime NOT NULL COMMENT '创建时间',
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='';

一个用户登录表

CREATE TABLE user_login (
user_id int(10) NOT NULL DEFAULT '0' COMMENT '用户ID',
create_time datetime NOT NULL COMMENT '创建时间',
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='';

怎么查出每天的登录用户一共充值的金额?

比如
user_recharge
user_id amount create_time
10001 100 2017-08-04 12:00:05
10002 100 2017-08-04 12:00:05
10002 100 2017-08-05 12:00:05
10003 100 2017-08-05 12:00:05

user_login
user_id create_time
10001 2017-08-04 12:00:05
10002 2017-08-05 12:00:05
10003 2017-08-05 12:00:05

结果应该是
2017-08-04 100
2017-08-05 200
因为2017-08-04,10001登录了,充值了100
2017-08-05,10002, 10003登录了,一共充值了200

求助这个sql怎么写。

阅读 1.9k
1 个回答

我比较好奇你充值表里面10002在4号没有登录怎么充值的100

以下sql只为取出你要的结果:

select left(b.create_time,10) dt,sum(a.amount) sm 
from user_recharge a 
join user_login b 
on a.user_id=b.user_id 
 and left(a.create_time,10)=left(b.create_time,10)
group by dt;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题