Вы можете проверить правильность результата, используя
select t.year, t.month, t1.SumQuantity, t2.avgTemp, t2.avgHum
FROM (
select year(s1.date), month(s1.date) from s1
union
select year(s2.date), month(s2.date) from s2
) left join (
select year(s1.date), month(s1.date), SUM(s1.`quantity`) SumQuantity
from s1
group by year(s1.date), month(s1.date)
) t1 on t1.year = t.year
and t1.month = t.month
left JOIN (
select year(s2.date), month(s2.date), avg(s2.`Temperature`) avgTemp , avg(s2.`Humidity`) avgHum
from s1
group by year(s1.date), month(s1.date)
) t2 on t2.year = t.year
and t2.month = t.month
, и если запрос выше вернет правильный результат, используйте его для обновления
update my_table m
inner join (
select t.year, t.month, t1.SumQuantity, t2.avgTemp, t2.avgHum
FROM (
select year(s1.date), month(s1.date) from s1
union
select year(s2.date), month(s2.date) from s2
) left join (
select year(s1.date), month(s1.date), SUM(s1.`quantity`) SumQuantity
from s1
group by year(s1.date), month(s1.date)
) t1 on t1.year = t.year
and t1.month = t.month
left JOIN (
select year(s2.date), month(s2.date), avg(s2.`Temperature`) avgTemp , avg(s2.`Humidity`) avgHum
from s1
group by year(s1.date), month(s1.date)
) t2 on t2.year = t.year
and t2.month = t.month
) tt ON tt.year = year(m.date)
and tt.month = month(m.date)
set m.quantity = tt.SumQuantity,
m.Temperature = tt.AvgTemp,
m.Humidity = tt.AvgHum