【问题标题】:How to calculate the average of a column in mySQL grouped by another column in a conditional statement?如何计算条件语句中由另一列分组的mySQL中的列的平均值?
【发布时间】:2020-12-04 18:30:09
【问题描述】:

我需要计算第二列具有相同值的一列的平均值。例如,您有

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 子句参考手册。

标签: mysql sql average aggregate-functions having-clause


【解决方案1】:

你似乎想要一个having 子句:

select col1, avg(col2) as avg_col2
from tablename
group by col1
having avg(col2) >= 7

MySQL 在having 子句中支持列别名(这是对 SQL 标准的扩展),因此您可以将其简化为:

having avg_col2 >= 7

【讨论】:

  • @Akina:出于某种原因,我将其视为 SQL Server 问题(因此1.0 围绕整数除法工作)。我更改了 MySQL 的代码 谢谢!
猜你喜欢
  • 2016-06-11
  • 1970-01-01
  • 2015-08-09
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
  • 2021-08-19
  • 1970-01-01
相关资源
最近更新 更多