MySQL:对于在另一列中共享不同值的条目,如何在一列中获取 AVG 值?

标签 mysql

对于这样的表格:

id num   grp
1  12.3  group1
2  2.4   group2
3  7.6   group2
4  4.5   group1
5  8.9   group1
6  12.6  group1
7  1.1   group2
8  7.8   group1

我想向结果网格输出一个附加列,该列在 grp 值为 group1 的所有行中的值为 9.22,在 grp 值为 group2 的所有行中的值为 3.7。因此,在每种情况下,具有相同 grp 值的所有行的平均 num 值。

我还在学习 MySQL。我想我基本上知道我需要的组件(AVG、DISTINCT/GROUP BY,可能还有自连接?),但我正在努力寻找将它们组合在一起的正确方法。

最佳答案

你能试试下面的查询吗,使用 AVGGROUP BY,然后对同一张表使用 JOIN,你可以获得额外的符合您期望的列值:

SELECT TA.id, TA.num, TA.grp , AG.AvgNum
FROM ( SELECT grp, AVG(num) AS AvgNum
       FROM TableName
       GROUP BY grp ) AG
JOIN  TableName TA ON TA.grp = AG.grp 

Rextester 演示:http://rextester.com/SZW95037

关于MySQL:对于在另一列中共享不同值的条目,如何在一列中获取 AVG 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44878643/

相关文章:

mysql - 基于位掩码在mysql中查找重复记录

java - 查询表达式 'Nombreproductos ==' 某些产品中存在语法错误(缺少运算符)

php - 在 float LARAVEL 上调用成员函数 addEagerConstraints()

mysql - 对特定列进行排序/分组,通过 SQL 查询重复其所有值

mysql 中的 Java 枚举

php - 如何在 php 中使用 cron 作业自动删除 mysql 行?

MySQL 优化查询以计算一段时间内的计划项目

java - 如何在Android中选择上一个微调器时获取微调器项目?

php - 根据 session 选择

mysql - 哪个sql语句应该是正确的?