如何在PL/SQL中按slab wise金额区间分类汇总并排序数据?
PL/SQL按金额区间分类统计实现
需求说明
将表中数据按以下金额区间分类,按指定顺序排列,并对区间内的outs和paid字段进行统计计算:
- 100000-200000
- 200000-300000
- 300000以上
实现代码
假设表名为chit_records,以下是实现统计的PL/SQL查询语句:
SELECT CASE WHEN amount >= 100000 AND amount < 200000 THEN '100000-200000' WHEN amount >= 200000 AND amount < 300000 THEN '200000-300000' WHEN amount >= 300000 THEN '300000以上' END AS amount_range, SUM(outs) AS total_outs, SUM(paid) AS total_paid, COUNT(*) AS record_count FROM chit_records GROUP BY CASE WHEN amount >= 100000 AND amount < 200000 THEN '100000-200000' WHEN amount >= 200000 AND amount < 300000 THEN '200000-300000' WHEN amount >= 300000 THEN '300000以上' END ORDER BY CASE WHEN amount >= 100000 AND amount < 200000 THEN 1 WHEN amount >= 200000 AND amount < 300000 THEN 2 WHEN amount >= 300000 THEN 3 END;
代码说明
- 区间划分:通过
CASE表达式将每条数据映射到对应的金额区间,明确边界值归属(如200000归入第二个区间)。 - 统计计算:使用
SUM()对outs和paid求和,COUNT()统计区间内记录数,可根据需求替换为AVG()(平均值)等其他聚合函数。 - 排序控制:额外的
CASE表达式为每个区间分配排序序号,确保输出严格按照指定的区间顺序排列。
内容的提问来源于stack exchange,提问作者EFX Luke
相关产品推荐
相关产品推荐

