首页 > 解决方案 > 如何使用sql根据一列逐行查找平均值

问题描述

希望你一切都好。

资源 原因 数量 平均
11 破碎的 15 48%
11 移位 5 16%
11 闪光 10 32%
11 流血 1 3%

正如您在上表中看到的,我有一个有废料的资源,我们需要将每个原因分解为总数的百分比。

如您所见,总共有 31 个废料,我想将每个废料按百分比分解为特定资源。我不知道如何将其分解为 %

我将如何使用 SQL 以这种方式获得 % ?

标签: sql

解决方案


如果我理解正确,您可以使用窗口函数。要获得比率:

select t.*,
       (t.qty * 1.0 / sum(t.qty) over (partition by resource)) as ratio
from t;

如果您想要 0 到 100 之间的百分比而不是比率,则可以乘以 100。


推荐阅读