Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL和多个列的平均值_Mysql_Sql - Fatal编程技术网

MySQL和多个列的平均值

MySQL和多个列的平均值,mysql,sql,Mysql,Sql,我需要返回表中12列的平均值,单位为DB。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_

我需要返回表中12列的平均值,单位为DB。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-您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解在'dec'附近使用的正确语法

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


编辑:注意,您还在WHERE子句中使用它;它可能会在那里工作,因为MySQL在那里查找关键字是不符合逻辑的,但请记住,您可能还必须避开该关键字:

不工作在这里有点模糊。您能否至少告诉我们您希望后一个查询做什么,以及它做错了什么?当然。我的意思是它不能被解析。下面是我得到的错误:1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解使用“dec AS avg_dec FROM climate_data”的正确语法。当我尝试只对一列求平均值时,效果很好。其中,元素名称=Temp_mean_mly,第1DEC行的jan'是根据的保留字。在12月前后打勾。即使已接受修复,您确定此查询吗?因为它看起来像是你试图得到每月数据的平均值,除了值为-99999的地方。但是您的查询从所有平均值中排除了任何月份为-99999的所有行,这是非常不同的。如果你想知道怎么做,请在这里发布,然后取消接受答案,我会发布解决方案。是的,效果很好!:错误代码通常不是自解释的:您确定这有效吗?因为它看起来像是你在尝试获取当月数据的平均值,除了值为-99999的地方。您的查询不包括任何月份为-99999的所有行,这是非常不同的。如果你想知道怎么做,在这里发布并取消接受这个答案,我会发布解决方案。是的,你是对的!这是一个新问题: