sql - 如何在 SQL 中重用为不同列中的列计算的平均值?
问题描述
我想做的是计算特定列的平均值,然后使用该数字并从另一列的每个条目中减去它。
让我们考虑包含两个可能值(例如 TypeA 和 TypeB)的第一列 (Col_1)。这个想法是计算 TypeA 的第二列 (Col_2) 的平均值,然后从 Col_1 值为 TypeB 的第三列 (Col_3) 的每个条目中减去该数字。
在 SQL 中,我提出了该查询:
Select T1.Col_1
,T2.Avg1
,Case When T1.Col_1 = 'TypeB' Then T1.Col_3 - T2.Avg1 End as New_Col_3
from Table1 as T1
Inner Join
(
Select Case When Col_1 = 'TypeA' Then avg(Col_2) End as Avg1
From T1
Group by Col_1
) as T2 on T1.Col_1 = T2.Col_1
问题是当 Col_1 值为 TypeB 时 Avg1 为 NULL,所以基本上它不起作用。
如何重用 Avg1 并获得所需的结果?
提前致谢!
解决方案
这样做,在子查询中计算两者
Select T1.Col_1
,T2.AvgA
,T2.AvgA - T2.AvgB
from Table1 as T1
Inner Join
(
Select Col_1,
Case When Col_1 = 'TypeA' Then avg(Col_2) End as AvgA,
Case When Col_1 = 'TypeB' Then avg(Col_2) End as AvgB
From Table1 T1
Group by Col_1
) as T2 on T1.Col_1 = T2.Col_1
推荐阅读
- java - 如何在微调器下拉菜单上打开新活动单击
- reactjs - 我在哪里可以找到 react-bulma-components 的可用图标?
- python - 即使存在,也无法在 Selenium 中找到第二个元素
- c++ - 在对象中使用来自非对象 API 的函数的指针问题
- python - 如何使用我的 `ndarray` 在 matplotlib 中为以下几行设置动画?
- vba - VBA函数将多个变量传递回Sub
- python - ax.locator_params(nbins=k) 在 matplotlib 中不起作用
- python-3.x - opencv 不使用所有 GPU 内存
- r - 通过函数传递对象
- terraform - “for_each”值取决于无法确定的资源属性(Terraform)