各位大神们,现在有两张表realtime(send_time,range,oil)和gps(send_time,speed),我要把这两张表的数据汇总到sum表中,sum表的字段有year,month,day,hour,max(range)-min(range),avg(oil),max(speed),avg(speed),sum表记录的是每小时的数据,年月日小时就是send_time里面的,前两张表是每10秒的数据,他们每条数据都是一一对应的,sum表用的是是组合主键,有年月日小时这4个主键,我用的mysql,达到这一操作的sql语句要怎么写啊,我之前想写成一条,总写不好,后来分2条写,第二个update语句又不知道怎么写了,谢谢帮助我的各位大神
加上left join拼接呢
select a.* ,b.* from
(SELECT YEAR(r.send_time) y,MONTH(r.send_time) m,DAY(r.send_time) d,HOUR(r.send_time) h,
max(r.driving_range)-min(r.driving_range) r,avg(r.avg_oil_a) o
FROM realtime r GROUP BY DATE_FORMAT(r.sending_time,'%Y-%m-%d %H')) AS a
LEFT JOIN
(
SELECT YEAR(g.send_time) y,MONTH(g.send_time) m,DAY(g.send_time) d,HOUR(g.send_time) h,
max(g.speed) ms,avg(g.speed) avs
FROM gps g GROUP BY DATE_FORMAT(g.sending_time,'%Y-%m-%d %H') ) AS b
on a.y = b.y and a.m= b.m and a.h=b.h and a.d=b.d
从2张表中提取相应数据,然后对应拼成一条SQL插入呗
没有想象的那么简单吧,两条查询sql语句分别是:
SELECT YEAR(r.send_time),MONTH(r.send_time),DAY(r.send_time),HOUR(r.send_time),
max(r.driving_range)-min(r.driving_range),avg(r.avg_oil_a)
FROM realtime r GROUP BY DATE_FORMAT(r.sending_time,'%Y-%m-%d %H')
SELECT YEAR(g.send_time),MONTH(g.send_time),DAY(g.send_time),HOUR(g.send_time),
max(g.speed),avg(g.speed)
FROM gps g GROUP BY DATE_FORMAT(g.sending_time,'%Y-%m-%d %H')
其中年月日时是一致的,怎么拼?
首先鄙视楼主,字段命名太混乱了,你看下这个能否正常运行
insert into sum select YEAR(r.send_time),MONTH(r.send_time),DAY(r.send_time),HOUR(r.send_time),max(r.range)-min(r.range),
avg(r.oil),max(g.speed),avg(g.speed) from realtime r,gps g where r.send_time=g.send_time
GROUP BY DATE_FORMAT(r.send_time,'%Y-%m-%d %H')
加上left join拼接呢
select a.* ,b.* from
(SELECT YEAR(r.send_time) y,MONTH(r.send_time) m,DAY(r.send_time) d,HOUR(r.send_time) h,
max(r.driving_range)-min(r.driving_range) r,avg(r.avg_oil_a) o
FROM realtime r GROUP BY DATE_FORMAT(r.sending_time,'%Y-%m-%d %H')) AS a
LEFT JOIN
(
SELECT YEAR(g.send_time) y,MONTH(g.send_time) m,DAY(g.send_time) d,HOUR(g.send_time) h,
max(g.speed) ms,avg(g.speed) avs
FROM gps g GROUP BY DATE_FORMAT(g.sending_time,'%Y-%m-%d %H') ) AS b
on a.y = b.y and a.m= b.m and a.h=b.h and a.d=b.d