想将常规值表中的平均值仅作为平均值插入到 2008 年的平均值表中,但代码有错误,我是如何克服的。没有“where year(DATE_FORMAT(date, '%y-%m-%d'))= 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
最佳答案
简单地做
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
Year 函数会自动为您进行转换,您也会从速度中受益。
关于mysql - 想要从常规值中将平均值插入到仅 2008 年的平均值表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20238913/