#SQL 两个表,客户表tb_consumer(客户ID,uid,名字 name),账单交易表tb_trans (客户ID uid, 交易时间 date,交易额 money)
#问:查询每个客户,每个月的总交易单数,和总交易额。
#DECIMAL(P,D);
#P是表示有效数字数的精度。 P范围为1〜65。
#D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。
SELECT DATE_FORMAT("2020-11-16", "%Y-%M"); #2020-November
SELECT DATE_FORMAT("2020-11-16", "%Y-%m"); #2020-11
创建表和插入数据
复制收展SQLDROP TABLE IF EXISTS tb_consumer;
CREATE TABLE tb_consumer
(uid VARCHAR(8) PRIMARY KEY COMMENT '客户id',
name VARCHAR(6) NOT NULL COMMENT '名字'
)ENGINE=InnoDB DEFAULT character set=utf8 COMMENT '客户表';
DROP TABLE IF EXISTS tb_trans;
CREATE TABLE tb_trans
(uid VARCHAR(8) COMMENT '客户id',
date date NOT NULL COMMENT '交易时间',
money DECIMAL(5,2) NOT NULL COMMENT '交易金额,'
);
INSERT INTO tb_consumer VALUES
('001', '张三'),
('002', '李四'),
('003', '王五');
INSERT INTO tb_trans VALUES
('001', '2020-09-11', 45.8),
('001', '2020-09-12', 10.8),
('001', '2020-10-16', 89.8),
('001', '2020-10-14', 29.8),
('001', '2020-11-13', 89.8),
('002', '2020-10-15', 59.3),
('002', '2020-10-13', 44.8),
('002', '2020-11-16', 89.8),
('003', '2020-11-14', 32.8),
('003', '2020-11-16', 843.8),
('003', '2020-10-12', 89.8);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
#问:查询每个客户,每个月的总交易单数,和总交易额。
复制收展SQLSELECT
a.uid '客户ID',
a.name '客户姓名',
DATE_FORMAT(b.date, '%Y-%m') '月份',
COUNT(a.uid) '月份交易单数',
SUM(b.money) '月份交易额'
FROM
tb_consumer AS a
LEFT JOIN tb_trans AS b
ON a.uid=b.uid
GROUP BY a.uid,DATE_FORMAT(b.date, '%Y-%m');
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11