sql - 如何使用sql根据一列逐行查找平均值
问题描述
希望你一切都好。
资源 | 原因 | 数量 | 平均 |
---|---|---|---|
11 | 破碎的 | 15 | 48% |
11 | 移位 | 5 | 16% |
11 | 闪光 | 10 | 32% |
11 | 流血 | 1 | 3% |
正如您在上表中看到的,我有一个有废料的资源,我们需要将每个原因分解为总数的百分比。
如您所见,总共有 31 个废料,我想将每个废料按百分比分解为特定资源。我不知道如何将其分解为 %
我将如何使用 SQL 以这种方式获得 % ?
解决方案
如果我理解正确,您可以使用窗口函数。要获得比率:
select t.*,
(t.qty * 1.0 / sum(t.qty) over (partition by resource)) as ratio
from t;
如果您想要 0 到 100 之间的百分比而不是比率,则可以乘以 100。
推荐阅读
- r - 如果一列中的观察值等于 R 中另一列的名称,则循环分配一个值
- python - 如何使用 groupby 为 xarray 数据集添加新变量并应用?
- flutter - 如何在 Flutter 中的单独小吃店或 toast 中显示错误消息?
- html - 如何创建每个扩展面板独有的 Angular Material Chips?
- html - 如何在角度 ssr 中预加载图标字体?
- python - 如何使用 Postgres 使用 Flask-SQLAlchemy,主键不重用已删除的数字?
- javascript - 如何在 JavaScript/TypeScript 中动态读取/写入局部变量?
- sql-server - SQL Server does not exist or access denied - for SQL Server Express
- swift - 使用嵌套的异步 Firebase 调用 SwiftUI
- excel - Making charts appear on individual sheets