mysql - SQL按类别平均列

标签 mysql sql

我正在尝试根据另一列获取一列的平均值。然后,我想创建一个新列,其中该平均值代表每个类别。 我似乎无法弄清楚这一点。感谢您的帮助。

这是我的 table

| value   |  category  |
|    3    |      a     |
|    4    |      a     |
|    5    |      a     |
|    2    |      b     |
|    4    |      b     |
|    3    |      b     |
|    1    |      c     |
|    7    |      c     |

这就是我想要的:

| value   |  category  |  category avg  |
|    3    |      a     |         4      |
|    4    |      a     |         4      |
|    5    |      a     |         4      |    
|    2    |      b     |         3      |
|    4    |      b     |         3      |
|    3    |      b     |         3      |    
|    1    |      c     |         4      | 
|    7    |      c     |         4      |   

最佳答案

您可以在 from 子句或 select 子句中使用子查询来执行此操作。这是一种方法:

select value, category,
       (select avg(value) from table t2 where t.category = t2.category) as catgory_avg
from table t;

编辑:

如果您想更新表中的值,那么您可以执行以下操作:

update table t join
       (select category, avg(value) as avgv
        from table t
        group by category
       ) tavg
       on t.category = tavg.category
    t.category_avg = tavg.avgv;

关于mysql - SQL按类别平均列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26790868/

相关文章:

mysql - SQL使用其他表+一个值获取数据

mysql - 无法访问 localhost/phpmyadmin

mysql - Bundler::GemNotFound:无法在任何来源 9(logstash、elasticsearch)中找到 logstash-input-jdbc-4.2.1

C# SQL Server 登录凭据

sql - 如何在postgresql中查找数组的大小

php - 重复的名字

php表单从url获取参数并存储到最终页面

mysql - 如何从 MySQL 查询库中的用户集合中设置每个用户时区。

mysql - debezium 0.8.0 mysql连接器解析binlog失败,table.columnWithName返回null,为什么会这样?

sql - SSMS:如何仅返回每个月/年最后一行的值而不是每一行?