如何解决2 同表的结果百分比
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%(所有结果都在一个表中)作为第一个查询
简单来说,我需要说 30% 是所有 10 名学生中 22 名以上的 3 个名字的总百分比。
解决方法
使用在表上有条件地聚合的子查询会更容易:
SELECT name,age,(SELECT 100 * AVG(age > 22) FROM student) AS Total_Perecentage
FROM student
WHERE age > 22
参见demo。
结果:
名称 | 年龄 | Total_Perecentage |
---|---|---|
莎拉 | 25 | 30 |
小鼠 | 23 | 30 |
Elis | 27 | 30 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。