某理财银行有下面3个表。
交易表记录了每天交易的客户交易时间、客户号、消费类型和消费金额。其中,交易类型有两种值:消费和转账。
客户表记录了客户信息,包括客户号,客户名称和客户所属的银行分行号
分行号记录每个分行的信息,包括分行号、分行名称及对应上级分行。
该理财银行要求对客户及销售额分析报告,要求如下:
1.计算2016年1-3月的消费总金额,生成如下格式的查询结果
2.提取2016年3月消费金额大于等于1288的客户名单,并给出这些客户信息
3.汇总各省分行(省分行下属支行也需要汇总至省分行)的2016年3月的总消费金额
【解题步骤】
观察三张数据表看出交易表和客户表通过“客户号”关联,客户表和银行分行对应表通过“分行号”有关联。
1)交易表中的交易类型有两种(消费和转账),所以要对交易类型=消费 进行筛选。同时,要分析的是2016年的数据,所以也要对交易时间筛选。
select *
from 交易表
where 交易类型 = "消费" and year(交易时间) = 2016;
2)对交易时间按格式分类(year(),month()),用case when 语句对交易时间进行判断,符合2016年1-3月的记录并显示金额,不符合显示空值。
select
(case when year(交易时间) = 2016 and month(交易时间) = 1
then 交易金额 else null end) as 2016年1月,
(case when year(交易时间) = 2016 and month(交易时间) = 2
then 交易金额 else null end) as 2016年2月,
(case when year(交易时间) = 2016 and month(交易时间) = 3
then 交易金额 else null end) as 2016年3月
from 交易表;
3)符合记录的交易金额求和,得出1-3月份总的消费额