如图,MySql5.5版本,实际表中ID并不是自增长的,而是UUID生成的。需求:根据时间分组查询,分组规则可以是1分钟,也可以是5分钟或10分钟为一组,时间不能写死,要每一组第一个时间点的开盘价;最后一个时间点的收盘价;这组内的最低价;这1组内的最高价。比如我要查5分钟一组的数据,把时间改成5就行了,具体需要的数据是:这5分钟(如:5分00秒——10分59秒这个时间段,时间间隔是随机的,并不一定是第0秒,也不一定是第59秒,反正是在这5分钟内的)内第一个时间点的开盘价;最后一个时间点的收盘价;这1分钟内的最低价;这1分钟内的最高价;最后一个时间点的时间(时间格式:年-月-日 时:分)。过后悬赏,没暂时充值,呵呵。
MySql分组条件查询,非常急,折腾两天了,非常感谢。
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 路漫漫兮其修远兮 2018-12-27 02:27关注
说一下我的思路,
1. 以时间分组,肯定需要最小的时间作为起始界限。
2. 查询到最小的时间。
3. 用其余的时间减去最小的时间,获得他们的时间差。
4. 用时间差去除以你你需要分段的时间内容,这里比如说是5,然后对他们结果取整
,0表示他们都是和开始时间相差5分钟以内,1表示和开始时间相差10分钟以内。。。SELECT * FROM tb_order AS c GROUP BY ( SELECT FLOOR( ( UNIX_TIMESTAMP( c.createDateTime ) - ( select UNIX_TIMESTAMP(temp.createDateTime) FROM tb_order AS temp ORDER BY temp.createDateTime LIMIT 1 ) ) / ( 5 * 60 ) ) ) ORDER BY c.createDateTime;
这个是我自己表写的sql,其中FLOOR是取整,舍弃小数部分,UNIX_TIMESTAMP 是转为秒数,所以5*60也是要分组的秒数。
然后你自己的sql,你对应的把表明,字段,别名换了就可以,都是mysql。
若还有别的问题我们在沟通。如果对你有用,请采纳,攒点声望
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报