mysql - 如何计算条件语句中由另一列分组的mySQL中的列的平均值?
问题描述
我需要计算第二列具有相同值的一列的平均值。例如,您有
Col1 | Col2
a | 2
a | 9
b | 6
b | 10
我需要检索按 Col1 分组的 Col2 的平均值,即 (9+2)/2 和 (6+10)/2。我可以在自己的单独查询中检索它,但它是平均值必须大于 7 的条件的一部分。mySQL 中的示例代码是
SELECT Col1, AVG(Col2) FROM tableName
GROUP BY Col1;
SELECT Col1 FROM tableName
WHERE (SELECT AVG(Col2) GROUP BY Col1) >= 7;
第一个查询正确地给了我按 Col1 分组的 Col2 的平均值,但第二个查询只是取整个 Col2 的平均值并返回大于所有列的计算平均值的值。为什么第二个查询不按 col1 分组,我应该如何更改我的代码以正确分组元组?
解决方案
你似乎想要一个having
子句:
select col1, avg(col2) as avg_col2
from tablename
group by col1
having avg(col2) >= 7
MySQL 在having
子句中支持列别名(这是对 SQL 标准的扩展),因此您可以将其简化为:
having avg_col2 >= 7