一次取最新客户评级的sql体验之旅
问题描述
在项目中遇到了如下问题:
假设有一家租赁公司,他们每个月都要对客户做评级处理。我要做的是一张报表,去反映最新的评级结果。首先来简化一下问题。
假设我们目前的数据是这样的:
客户名称 | 评级日期 | 评级结果 |
---|---|---|
客户A | 2016年9月14日 | C |
客户A | 2016年8月14日 | D |
客户A | 2016年7月14日 | A |
客户B | 2016年9月14日 | B |
客户B | 2016年8月14日 | B |
客户B | 2016年7月14日 | A |
客户C | 2016年9月14日 | A |
客户C | 2016年8月14日 | B |
客户C | 2016年7月14日 | A |
最终呈现的结果为
客户名称 | 评级日期 | 评级结果 |
---|---|---|
客户A | 2016年9月14日 | C |
客户A | 2016年8月14日 | C |
客户A | 2016年7月14日 | C |
客户B | 2016年9月14日 | B |
客户B | 2016年8月14日 | B |
客户B | 2016年7月14日 | B |
客户C | 2016年9月14日 | A |
客户C | 2016年8月14日 | A |
客户C | 2016年7月14日 | A |
也就是以最新一次的评级作为我们的评级结果。
模拟现实场景
假设我们有一张客户评级表和流程信息表,客户评级表记录了客户信息,例如:客户编号,评级结果,等等;流程信息表记录了流程启动时间,结束时间,业务表的ID等等。
表的简化设计如下:
客户评级表: rateinfo
字段 | 字段描述 |
---|---|
ID | 主键 |
cust_code | 客户编号 |
level | 客户评级结果 |
流程信息表:flowinfo
字段 | 字段描述 |
---|---|
ID | 主键 |
rate_id | 客户评级表ID |
endtime | 流程结束时间 |
假设我们的测试数据是这样的:
客户评级表数据: rateinfo
主键(ID) | 客户编号(cust_code) | 评级结果 (level) |
---|---|---|
10 | 100 | C |
20 | 100 | D |
30 | 100 | A |
40 | 200 | B |
50 | 200 | B |
60 | 200 | A |
70 | 300 | A |
80 | 300 | B |
90 |