mysql - 使用 MySQL 生成 2-uple 的平均值

标签 mysql

我可以从这样的记录生成一个表:

ID|Var1|Var2|Measure
1   10   13    10
1   10   15    8
1   15   13    0
    ...

一个ID可以有多个相同的Var2。我如何为每个 2-uple ID-Var2 生成平均值:

ID|Var2|Mean_Measure
1   13    5
1   14    8
...
2   13    7

谢谢

最佳答案

您需要使用 GROUP BY 子句将具有相同 IDVar2 的行分组在一起,然后将 AVG函数计算平均值:

SELECT t.ID, t.Var2, AVG(t.Measure) AS Mean_Measure FROM YourTable t GROUP BY t.ID, t.Var2

我可能会补充一点,GROUP BY 会极大地改变查询的输出。它还对输出添加了一些限制。首先 - 在 group by 之后,您只能在 SELECT 子句中添加表达式,其中适用以下条件:

  1. 该表达式是 GROUP BY 子句的一部分
  2. 该表达式是聚合函数的应用

在上面的示例中,t.ID 和 t.Var2 存在于 GROUP BY 子句中,AVG(t.Measure) 是聚合函数 AVG 在 t.Measure 上的应用。

在处理 WHERE 子句和 GROUP BY 时,还需要注意一些事项:

  1. WHEREGROUP BY 之后应用,这通常意味着不在 GROUP BY 中的表达式不能在 WHERE< 中使用 子句
  2. 如果您希望在GROUP BY之前过滤数据,请使用HAVING而不是WHERE

我希望这是有道理的 - 为了获得更多更好的关于 GROUP BY 如何工作的信息 - 我建议 consulting the MySQL manual on the topic .

关于mysql - 使用 MySQL 生成 2-uple 的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6909203/

相关文章:

php - SQL中的匹配兴趣(最近邻)搜索

mysql - 具有 130gb 内存的服务器上 innodb_buffer_pool_size 的正确值?

php - Laravel 5.4 结合两个集合

mysql - 操作数应包含 1 列???确实如此,但仍然出错。这是一个错误吗?

MySQL 显示一行以不同的值多次出现?

php - 用于从多对多关系返回值的 SQL

mysql - 不在 SQL 表中插入土耳其语字符。选择时显示 'xxx??xxx'

mysql - 如何更新表中特定行的列?

mysql - 在 MySQL 存储过程中执行多个游标时遇到问题

PHP PDO插入数据库函数问题