如图,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。
若还有别的问题我们在沟通。如果对你有用,请采纳,攒点声望
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 素材场景中光线烘焙后灯光失效
- ¥15 请教一下各位,为什么我这个没有实现模拟点击
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器