postgresql - PostgreSQL:根据其他列的总和结果创建生成列的最佳方法
问题描述
我是 PostgreSQL 的新手,所以这个问题对于有经验的人来说可能是基本的。
我创建了一个测试数据库,其中包含一个名为的表Activity
,如下所示:
Manufacturer Region Model Orders Sales
BMW Americas 3 Series 58390 47092
BMW Americas 4 Series 31938 28474
BMW Americas 5 Series 13730 10837
BMW Americas 7 Series 9372 6493
Audi Europe A3 60483 50381
Audi Europe A4 49302 39303
Audi Europe A5 50319 49001
Audi Europe A6 9101 4688
我想创建一个名为“生成”并存储的列OrdersToTradesRatio
(这是订单与销售的比率,按 region 求和)。
使用上面的数据,OrdersToSales
将是:
OrdersToSales
1.22104 <----- Mercedes --- (58390 + 31938 + 13730 + 9372) / (47092 + 28474 + 10837 + 6493)
1.18017 <----- Audi ------- (60483 + 49302 + 50319 + 9101) / (50381 + 39303 + 49001 + 4688)
结合计算OrdersToSales
列,该表可能如下所示:
Manufacturer Region Model Orders Sales OrdersToSales
BMW Americas 3 Series 58390 47092 <null>
BMW Americas 4 Series 31938 28474 <null>
BMW Americas 5 Series 13730 10837 <null>
BMW Americas 7 Series 9372 6493 <null>
BMW Americas <null> <null> <null> 1.22104
Audi Europe A3 60483 50381 <null>
Audi Europe A4 49302 39303 <null>
Audi Europe A5 50319 49001 <null>
Audi Europe A6 9101 4688 <null>
Audi Europe <null> <null> <null> 1.18017
OrdersToSales
是否可以如上所示创建此列?
提前致谢!
解决方案
尝试这个:
select "Manufacturer","Region","Model","Orders","Sales", null as "OrdersToSales" from "Activity"
union all
select "Manufacturer", "Region", null,null,null, round(sum("Orders")/sum("Sales"),5)
from "Activity"
group by "Manufacturer", "Region"
order by "Manufacturer","Region","Model", "OrdersToSales" desc
ROLLUP
如果符合您的要求,您应该尝试一下
推荐阅读
- c# - Knockout.js 将参数绑定到 Data-Target 返回对象而不是文本(手风琴)
- c# - 我可以使用另一个自定义环境变量名称而不是 GOOGLE_APPLICATION_CREDENTIALS 吗?
- indexing - 乳胶数字环境:如何从固定数字开始对数字进行索引?
- java - 如果字符是 0 到 8 之间的数字,则将其加 1(其他字符不变)
- python - 填写多索引熊猫数据框中的缺失组
- django - 如何将 id 存储在数据库中,但在 Django 的 modelchoicefield 中显示名称?
- reactjs - React、TypeScript Hero 和 TSLint 问题
- reactjs - 使用 useEffect 避免在多个 firebase 快照上重新渲染
- flutter - FlatButton 子项不在按钮内居中
- amazon-web-services - AWS Api 网关对 .NET Core 中 JSON 的响应