mysql - 怎么写这个分组sql

查看:100
本文介绍了mysql - 怎么写这个分组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怎么写。

解决方案

我比较好奇你充值表里面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;

这篇关于mysql - 怎么写这个分组sql的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆