【Oracle】计算百分比

  • 使用ratio_to_report()over() 函数计算百分比

  • 如果over()里不加任何内容,就是从数据总量的角度进行汇总计算;

  • over()里如果加 partition by XXX,就是根据XXX这个字段进行分组后再汇总计算;

  1. 情况一:仅计算某一类的数量占总数量的百分比(单个维度);

如,希望统计某学校不同班级的学生人数及人数占比;

班级

性别

学号

姓名

一班

0001

X

二班

0002

Y

三班

0003

Z

……

……

……

二班

1000

G

SELECT 班级,COUNT(1) AS 学生人数,
RATIO_TO_REPORT(COUNT(1))OVER() AS 学生人数占比
FROM 学生信息表
GROUP BY 班级;
  1. 情况二:多个维度的数量百分比计算;

如,希望统计某学校不同班级中各自的性别比例,期望结果:一班男生50%、女生50%,二班男生45%、女生55%,……

SELECT 班级,性别,COUNT(1) AS 学生人数,
RATIO_TO_REPORT(COUNT(1))OVER(PARTITION BY 班级) AS 性别占比
FROM 学生信息表
GROUP BY 班级,性别;

你可能感兴趣的:(Oracle,oracle,数据库,sql)