mysql - 想要从常规值中将平均值插入到仅 2008 年的平均值表中

标签 mysql sql

想将常规值表中的平均值仅作为平均值插入到 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/

相关文章:

mysql - 试图删除 MySql 电子邮件列中 '@' 符号之前的所有内容

mysql - Laravel - 提高大数据(800 万行以上)查询读取性能的可能解决方案

MySQL排名比较

php - 使用 MYSQL AES_ENCRYPT 函数与 PDO 但错误且字符串格式不同

mysql - 无法使 SQL 查询正常工作

mysql - MySQL查询中如何选择特殊日期记录

MySQL根据同一表中的日期时间范围更新字段

mysql - SQL——用一个条件对多个条件进行搜索

mysql - 我想将两个 Sequelize 查询合并为单个 Sequelize 查询

mysql - 仅当替换值不为空时如何替换到列中?