是否有办法对多个条件有一行结果?



我必须返回多列的平均结果,只有当另一列被设置为特定值时。

这是我想要的一个例子:

SELECT AVG(col1_value1) AS res1 FROM table WHERE col1_value2 = 10;
SELECT AVG(col2_value1) AS res2 FROM table WHERE col2_value2 = 10;
SELECT AVG(col3_value1) AS res3 FROM table WHERE col3_value2 = 10;

然后我希望我的结果返回这个

<表类>res1它res3tbody><<tr>10.58.59

使用条件平均,我们可以尝试:

SELECT
AVG(CASE WHEN col1_value2 = 10 THEN col1_value1 END) AS res1,
AVG(CASE WHEN col2_value2 = 10 THEN col2_value1 END) AS res2,
AVG(CASE WHEN col3_value2 = 10 THEN col3_value1 END) AS res3
FROM yourTable;

与当前的方法相比,这有一个优点,因为它只需要一次遍历表,而不是3次单独的查询。