2013-11-27 85 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中)。 我相信,如果你在他們之間切換,它應該工作。