sql - SQL 将 Where 子句引入新列
问题描述
我在 SQL Server 上运行这个 SQL,它运行良好:
SELECT
X.benefit,
AVG(X.weight) AS W
FROM
(SELECT
benefit,
weight,
comp
FROM
Segment_Responses AS a
INNER JOIN
Segment_Descriptors AS b ON a.resp_id = b.resp_id
WHERE
b.comp = 0) AS X
GROUP BY
X.benefit
我的问题是......虽然我可以用 b.comp=0 运行它(并获得好处和平均权重),然后再用 b.comp=1 (b.comp 是一个布尔值),有没有办法构造 SQL,以便有 3 个输出(好处,b.comp=0 时的平均权重和 b.comp=1 时的平均权重)。似乎这应该是可能的 - 我只是不知道该怎么做。谢谢。
解决方案
您可以查询几个case
表达式的平均值:
SELECT
X.benefit,
AVG(CASE comp WHEN 1 THEN X.weight END) AS comp_1_avg,
AVG(CASE comp WHEN 0 THEN X.weight END) AS comp_0_avg
FROM
(SELECT
benefit,
weight,
comp
FROM
Segment_Responses AS a
INNER JOIN
Segment_Descriptors AS b ON a.resp_id = b.resp_id) AS X
GROUP BY
X.benefit
推荐阅读
- javascript - ( Opencart v2.3 ) 在 iphone 中清空 (minicart) 中的所有购物车项目
- mysql - 在 MySQL 中使用多个 JOIN 表声明一个变量
- javascript - Listen / Observe - 使用 store.js 更改 LocalStorage
- php - 在循环中获取数组的增量
- unix - 在 Solaris 中使用 exec 的 fcntl()
- three.js - 带有 alpha 通道的 THREE.WebGLRenderTarget 中的颜色比预期的要暗
- python - 了解 DXF 文件格式。标签和几何之间的关系
- java - 获取随机 ID
- css - Chrome Element Inspector 字体
- navigation - 实际导航的 Flutter Navigation Drawer