sql - 从 GROUP BY 中除以总和
问题描述
我的目标是将一个范围内的所有值相加,然后将该总和除以该值的总数。
通过下面的查询,我可以使用 a 对值求和GROUP BY
:
select
sum(cast(json_data -> 'surface_extension' -> 'cold' -> 'percentage' as float)) as cold_perc,
sum(cast(json_data -> 'surface_extension' -> 'coolest' -> 'percentage' as float)) as coolest_perc,
sum(cast(json_data -> 'surface_extension' -> 'comfort' -> 'percentage' as float)) as comfort_perc,
sum(cast(json_data -> 'surface_extension' -> 'hot' -> 'percentage' as float)) as hot_perc,
sum(cast(json_data -> 'surface_extension' -> 'very_hot' -> 'percentage' as float)) as very_hot_perc,
area_urban_id
from project_urbaninfo
where area_urban_id = 3 and item_service_id = 29 and infotype_id = 1
group by area_urban_id
通过下一个查询,我可以计算所有值:
select count(1)
from project_urbaninfo
where area_urban_id = 3 and item_service_id = 29 and infotype_id = 1
我的问题是如何加入这两个结果。
编辑:我的目标是获得这样的东西:
sum(cast(json_data -> 'surface_extension' -> 'cold' -> 'percentage' as float)) / COUNT as cold_perc
解决方案
请试试这个。
select
sum(cast(json_data -> 'surface_extension' -> 'cold' -> 'percentage' as float))/COUNT(1) as cold_perc,
sum(cast(json_data -> 'surface_extension' -> 'coolest' -> 'percentage' as float))/COUNT(1) as coolest_perc,
sum(cast(json_data -> 'surface_extension' -> 'comfort' -> 'percentage' as float))/COUNT(1) as comfort_perc,
sum(cast(json_data -> 'surface_extension' -> 'hot' -> 'percentage' as float))/COUNT(1) as hot_perc,
sum(cast(json_data -> 'surface_extension' -> 'very_hot' -> 'percentage' as float))/COUNT(1) as very_hot_perc,
area_urban_id
from project_urbaninfo
where area_urban_id = 3 and item_service_id = 29 and infotype_id = 1
group by area_urban_id
推荐阅读
- javascript - 如何通过 Chrome 扩展更改 Chrome 系统页面标题?
- javascript - 使按钮居中
- reactjs - 通过 Storybook 中的 args 传递的片段使用组件状态?
- oop - 如何编写紧密耦合的工厂设计模式代码块的Xunit测试用例?
- c# - 如何使用 Linq 根据用户属于另一个表的位置来查询表
- azure - 从 Azure 数据工厂中的单个表创建多个 CSV 文件
- ubuntu - 带有 Post Auth 硬件地址检查脚本的 OpenVPN 社区版
- plot - 朱莉娅情节适用于颜色的哪个功能?
- php - GraphQL 不是自我记录的
- excel - VBA 错误 1004:范围类的复制方法失败