MySql分组条件查询,非常急,折腾两天了,非常感谢。

如图,MySql5.5版本,实际表中ID并不是自增长的,而是UUID生成的。需求:根据时间分组查询,分组规则可以是1分钟,也可以是5分钟或10分钟为一组,时间不能写死,要每一组第一个时间点的开盘价;最后一个时间点的收盘价;这组内的最低价;这1组内的最高价。比如我要查5分钟一组的数据,把时间改成5就行了,具体需要的数据是:这5分钟(如:5分00秒——10分59秒这个时间段,时间间隔是随机的,并不一定是第0秒,也不一定是第59秒,反正是在这5分钟内的)内第一个时间点的开盘价;最后一个时间点的收盘价;这1分钟内的最低价;这1分钟内的最高价;最后一个时间点的时间(时间格式:年-月-日 时:分)。过后悬赏,没暂时充值,呵呵。
图片说明

1个回答

说一下我的思路,
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。

若还有别的问题我们在沟通。如果对你有用,请采纳,攒点声望

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!