加载中...
加载中...
MySQL 按月份分组(查询每个客户,每个月的总交易单数,和总交易

MySQL 按月份分组(查询每个客户,每个月的总交易单数,和总交易 原创

#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



没有更多推荐了 [去首页]
image
文章
357
原创
284
转载
73
翻译
0
访问量
199063
喜欢
47
粉丝
6
码龄
5年
资源
0

文章目录

加载中...
0
0