2 结果百分比相同 table

2 result perecentage with the same table

select AGE,
(count (case when age > 22 then name end)*100.0/count(name)) as percentage
from student;

结果 20 30.0

select name, age,
(select 100*age/sum(age) over () as percentage from student) as percentage ,
(count(case when age > 22 then name end )*100.0/ count (name)) as Total_Perecentage 
from student
WHERE age > 22
GROUP BY 1,2;

结果

Elis    27  9   100.0
Mice    23  9   100.0
Sara    25  9   100.0

我的问题如何将 Total_percentage 从 100% 更新到 30%(所有结果都在一个 table 中)作为第一个查询

简单来说,我要说的是30%是所有10个学生中22岁以上的3个名字的总百分比。

Result

使用在 table 上有条件聚合的子查询更容易:

SELECT name, age, 
       (SELECT 100 * AVG(age > 22) FROM student) AS Total_Perecentage 
FROM student 
WHERE age > 22

参见demo
结果:

name age Total_Perecentage
Sara 25 30
Mice 23 30
Elis 27 30