Mysql 两个group by查询之间的自然联接
这里还有一个小问题。 我必须合并两个不同的表。 在第一个例子中,我必须找到一小时datetime范围内的平均外部温度。 在第二个例子中,我必须计算每小时使用的千瓦数,在小时日期时间范围内。 单个查询可以很好地工作,但是当我尝试加入它们时,它们就不起作用了。 此查询不起作用:Mysql 两个group by查询之间的自然联接,mysql,sql,join,Mysql,Sql,Join,这里还有一个小问题。 我必须合并两个不同的表。 在第一个例子中,我必须找到一小时datetime范围内的平均外部温度。 在第二个例子中,我必须计算每小时使用的千瓦数,在小时日期时间范围内。 单个查询可以很好地工作,但是当我尝试加入它们时,它们就不起作用了。 此查询不起作用: select dataora, AVG(Test) from temperature where dataora between '2013-11-01' and '2013-11-31' GROUP BY date(d
select dataora, AVG(Test)
from temperature
where dataora between '2013-11-01' and '2013-11-31' GROUP BY date(dataora),hour(dataora)
natural join (
SELECT
(t1.dt) AS time,(case
when t1.value>t2.value AND t2.value>0
then abs(t1.value - t2.value)
when t1.value>t2.value AND t2.value=0
then t2.value
else t1.value END)kwhg,
(case
when t1.value1>t2.value1 AND t2.value1>0
then abs(t1.value1 - t2.value1)
when t1.value1>t2.value1 AND t2.value1=0
then t2.value1
when t1.value1=t2.value1 AND t1.value1>0
then abs(t1.value1 - t2.value1)
else 0 END) kwhc,
(case
when t1.value2>t2.value2 AND t2.value2>0
then abs(t1.value2 - t2.value2)
when t1.value2>t2.value2 AND t2.value2=0
then t2.value2
when t1.value2=t2.value2 AND t1.value2>0
then abs(t1.value2 - t2.value2)
else 0 END)kwhi,
(case
when t1.value3>t2.value3 AND t2.value3>0
then abs(t1.value3 - t2.value3)
when t1.value3>t2.value3 AND t2.value3=0
then t2.value3
when t1.value3=t2.value3 AND t1.value3>0
then abs(t1.value3 - t2.value3)
else 0 END) kwhfm
FROM
(SELECT (dataora) dt, MAX(kwhg) value, MAX(kwhc) value1, MAX(kwhi) value2, MAX(kwhfm) value3 FROM misure where dataora between '2013-11-01' and '2013-11-31' GROUP BY date(dt),hour(dt)) t1
JOIN
(SELECT (dataora) dt, MAX(kwhg) value, MAX(kwhc) value1, MAX(kwhi) value2, MAX(kwhfm) value3 FROM misure where dataora between '2013-11-01' and '2013-11-31' GROUP BY date(dt),hour(dt)) t2
on t1.dt = t2.dt + interval 1 hour) t3
这一行只显示1行(第一行,而不是本例中需要的720行):
我使用自然连接,因为我需要每小时的实际千瓦数和每小时4个测量值(每15分钟)的平均外部温度。
也许答案很简单,但我还没有找到!
提前感谢您的帮助不要使用
自然加入
。它连接所有具有相同名称的字段。相反,做一个普通连接(我猜是内部连接
或左侧外部连接
),并在日期上使用on
子句:
(<subquery 1>) s1 join
(<subquery 2>) s2
on s1.time = s2.time
()s1连接
()s2
在s1.time=s2.time上
(<subquery 1>) s1 join
(<subquery 2>) s2
on s1.time = s2.time