Mysql 如何连接两个不同的表以及两个日期之间的平均值
我有两个表,表1和表2,结构如下: 表1: 表2: ` 我想把它们合并成这样:Mysql 如何连接两个不同的表以及两个日期之间的平均值,mysql,sql,join,Mysql,Sql,Join,我有两个表,表1和表2,结构如下: 表1: 表2: ` 我想把它们合并成这样: ....|VALUE1| STARTDATE| ENDDATE| AVG TEMPERATURE| ....|1 |2015-01-01|2015.01.03| 1.3| ....|1 |2015-01-01|2015.01.03| 1.3| ....|2 |2015-01-01|2015.01.04| 1.75|
....|VALUE1| STARTDATE| ENDDATE| AVG TEMPERATURE|
....|1 |2015-01-01|2015.01.03| 1.3|
....|1 |2015-01-01|2015.01.03| 1.3|
....|2 |2015-01-01|2015.01.04| 1.75|
....|3 |2015-01-02|2015.01.04| 2|
....|4 |2015-01-03|2015.01.05| 2|
....|5 |2015-01-03|2015.01.05| 2|
....|6 |2015-01-03|2015.01.06| 2.5|
....|7 |2015-01-04|2015.01.06| 3|
....|8 |2015-01-04|2015.01.08| 3|
....|N |2015-01-04|2015.01.09| 3|
所以我想计算新结构中开始日期和结束日期之间这段时间的平均温度
我尝试了以下查询:
select TABLE1.STARTDATE, TABLE1.ENDDATE,AVG(TABLE2.TEMPERATURE) as AVGTEMPERATURE
from TABLE1
left outer join TABLE2
on TABLE2.Date between TABLE1.STARDATE and TABLE1.ENDDATE
但它不起作用,并显示以下信息:
列“TABLE1.STARDATE”在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中
通过使用子查询,尝试下面的方法
select b.*,a.* from from TABLE1 b
left outer join
( select t2.*,t1.avgtemp from
( select VALUE1, avg(TEMPERATURE) as avgtemp from
TABLE2 group by VALUE1
) t1 join TABLE2 t2 on t1.VALUE1=t2.VALUE1
) a on on a.Date between b.STARDATE and b.ENDDATE
出现此错误是因为您使用了聚合函数avg并选择了表中的所有列,但在group by中未使用任何内容您需要group by:
对切勿使用SELECT*“..”的含义是什么?其他列其他值
select TABLE1.STARTDATE, TABLE1.ENDDATE,AVG(TABLE2.TEMPERATURE) as AVGTEMPERATURE
from TABLE1
left outer join TABLE2
on TABLE2.Date between TABLE1.STARDATE and TABLE1.ENDDATE
select b.*,a.* from from TABLE1 b
left outer join
( select t2.*,t1.avgtemp from
( select VALUE1, avg(TEMPERATURE) as avgtemp from
TABLE2 group by VALUE1
) t1 join TABLE2 t2 on t1.VALUE1=t2.VALUE1
) a on on a.Date between b.STARDATE and b.ENDDATE
select t1.STARTDATE, t1.ENDDATE, AVG(t1.TEMPERATURE) as AVGTEMPERATURE
from TABLE1 t1 left outer join
TABLE2 t2
on t2.Date between t1.STARDATE and t1.ENDDATE
group by t1.STARTDATE, t1.ENDDATE;