MySQL和多列的平均值

标签 mysql sql

我需要返回数据库表中 12 列中每一列的平均值。 MySQL 只允许获取一列的平均值。以下查询(针对一列)有效:

SELECT station_id, AVG(jan) AS avg_jan
FROM `climate_data`

WHERE element_name = "Temp_mean_mly" AND jan <> -999999  
GROUP BY station_id 

并且以下(对于多列)没有(我得到语法错误):

SELECT station_id, AVG(jan) AS avg_jan, AVG(feb) AS avg_feb, ... , 
AVG(dec) AS avg_dec 
FROM `climate_data`

WHERE element_name = "Temp_mean_mly" 
AND jan <> -999999 
AND feb <> -999999
AND ... 
AND dec <> -999999 
GROUP BY station_id 

我是否必须使用 12 个子查询才能获得我需要的结果?

最佳答案

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'dec)

dec是MySQL的保留关键字;在您的查询中将其更改为 `dec` 可能会为您修复该错误:)。

编辑:请注意,您还在 WHERE 子句中使用了它;它可能在那里工作(因为 MySQL 在那里找到关键字是不合逻辑的),但请记住,您可能还必须转义那个关键字:)

关于MySQL和多列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6597735/

相关文章:

MySQL 子字符串函数提取 URL 中的字符串

mysql - 如何在第二个查询中没有记录时减去两个表的列值

javascript - Mysql查询时间问题?

java - 在 iBatis 中,如何将 'JOIN' 与 null 属性一起使用?

sql - 需要一种在 SQL 数据库中存储/查询 json 的有效方法

mysql - (行到列/数据透视)+ SUM

mysql - 从 ECS Fargate WordPress 容器到 RDS MySql 的连接超时

mysql - 如果索引字段也是外键,我应该使用多索引方法吗?

mysql - 在SQL中选择工作时间最长的员工

php - 如何确定 PHP 中 SQLite 2 查询中受影响的行数