2013-11-27 92 views
1

想要从常规值表中平均插入平均值2008年平均值作为平均值,但代码有错误,我是如何克服的。没有 “其中一年(DATE_FORMAT(日期, '%Y-%间%d'))= 2008” 查询工作以及想要从平常值插入平均值2008年的平均值

INSERT IGNORE INTO `clima_data`.`avg_month_val1` (`year` , `month` , `evep` , `sunshine_hrs` , `rainfall` , `max_temp` , `min_temp`) 

SELECT year(str_to_date(date, '%Y-%m-%d'))as year, 
     month(str_to_date(date, '%Y-%m-%d'))as month, 
     round(avg(evep),2) ,  
     round(Avg(sunshine_hrs),2), 
     round(sum(rainfall),2), 
     round(AVG(max_temp),2) , 
     round(avg(min_temp),2) 
FROM reg_data3 
GROUP BY year(str_to_date(date, '%Y-%m-%d')), 
      month(str_to_date(date, '%Y-%m-%d')) 
WHERE year(DATE_FORMAT(date, '%y-%m-%d'))= 2008 
ORDER BY 1 Desc 
+0

请务必提及您正在使用的DBMS – uvais

+0

@uvais mysql,php – TKDSasindu

回答

0

根本就

 

    WHERE year(date)= 2008 
    GROUP BY year(date), month(date) 
 

,而不是

 

GROUP BY year(str_to_date(date, '%Y-%m-%d')), 
      month(str_to_date(date, '%Y-%m-%d')) 
WHERE year(DATE_FORMAT(date, '%y-%m-%d'))= 2008 
 

功能将自动为您做转换,您也将从速度中受益。

+0

@ Kneei-Before-ZOD谢谢它的运作良好 – TKDSasindu

+0

不客气,乐意效劳。 –

0

我注意到这里有一个可能的问题(如果指定了错误,会更容易指导你): WHERE子句应该出现在GROUP BY子句之前(至少在大多数DBMS中)。 我相信,如果你在他们之间切换,它应该工作。