天天看点

oracle中除以怎么做,sql - Oracle SQL-如何将计数除以计数总和? - 堆栈内存溢出

我有一个查询,当前看起来像这样(简体)

SELECT

m.academicyr,

m.ncyeargrp_format AS YEAR,

Count(*) AS cohort,

round (Avg (m.per_att),4) AS attendance,

Round (per_cohort,4)

FROM

(

SELECT

s.academy,

s.academicyr,

s.adno,

s.ncyeargrp_format,

CASE WHEN a.possible_att_marks = 0 THEN NULL

ELSE (a.present_att_marks / a.possible_att_marks)

END

AS per_att,

a.possible_att_marks,

a.present_att_marks,

a.period,

Count (*) AS cohort,

Count (*) / Sum(Count(*)) AS per_cohort

FROM

VACADEMY_STU_all s

LEFT JOIN

vacademy_attendance a

ON s.academy = a.academy

AND s.adno = a.adno

AND s.term = a.period

AND s.academicyr = a.academicyr

WHERE

s.academy = 'CAN'

AND s.academicyr = '1617'

AND a.period = '1'

GROUP BY

s.academy,

s.academicyr,

s.adno,

s.ncyeargrp_format,

a.possible_att_marks,

a.present_att_marks,

a.period

) m

GROUP BY

m.academicyr,

m.ncyeargrp_format,

m.per_cohort

ORDER BY

To_Number(Trim(regexp_replace(m.ncyeargrp_format, '[A-Za-z]')))

我在这里尝试将计数*除以计数*的总和。 我收到错误消息“不是单个组函数”。

该查询在没有第一个选择时使用'Round(Per_cohort,4)'的情况下也可以正常工作,并且也从内部选择和分组依据中删除。

我期望的结果是

年份组螺柱计数同类人群的百分比年份7126 18.18%98.10%年份8139 20.06%93.88%年份9143 20.63%90.56%年份10143 20.63%95.94%年份11142 20.49%88.45%总计693 100.00%93.28 %

我的所有其他列均正常运行,我只需要对同类群组进行百分比计算,因此,同类群组列中的值除以同类群组列的总数(已使用count *创建)。

任何帮助,不胜感激。

谢谢