表table1 有id  result 字段 假设1000条记录:
  20110601  open
  20110602  close
.......................
  20111600  open现要统计某一周期参数内open close个数对比,然后存进另一个表table2,假设每300条:
字段:
  start     end       open  close   interval
 20110601  20110900    150    160     300
 20110901  20111200    140    160     300
 20111201  20111500    144    156     300
 .....................................
 最后剩余的100条记录
 20111501  20111600    60     40      100若周期参数为200
    start     end     open  close   interval
 20110601  20110800    100    100     200
 20110801  20111000    80     120     200
 20111001  20111200    140    60      200
...........................................
 20111401  20111600   100    100      200请问查询语句写法?(最好一次查询能完成)
 

解决方案 »

  1.   

    Select (id-1) div 300,min(id) as start ,max(id) as end,
    Sum(if(result=’open’,1,0)) as open,
    Sum(if(result=’close’,1,0)) as close,
    300 as ` interval`
    From table1
    Group by (id-1) div 300
      

  2.   

    试了一下结果 628条记录
      (id-1) div 300 | start | end   | open | close | interval |
    +----------------+-------+-------+------+-------+----------+
    |             50 | 15249 | 15300 | 27   | 25    |      300 |
    |             51 | 15301 | 15600 | 144  | 156   |      300 |
    |             52 | 15601 | 15876 | 132  | 144   |      300   249-300 300-600 600-结束    都是从300的整数起始,
    这样有点偏离了 最好是 15249-15548 15548-15847 15848-最后
    最后问下div的用法 谢谢··
      

  3.   

    Select (id+2) div 300,min(id) as start ,max(id) as end,
    Sum(if(result=’open’,1,0)) as open,
    Sum(if(result=’close’,1,0)) as close,
    300 as ` interval`
    From table1
    Group by (id+2) div 300
      

  4.   

       DIV 
    整数除法。 类似于 FLOOR(),然而使用BIGINT 算法也是可靠的。 mysql> SELECT 5 DIV 2;        -> 2
      

  5.   


    加一加二一样的 div都固定了边界 300的整数加一减一而已
    我希望的是 随机的一条记录 n 到 n+299
    div都固定了 0-300 300-600 600-900 .....加一减一只是 围绕300上下
      

  6.   

    这样有点偏离了 最好是 15249-15548 15548-15847 15848-最后举例也是要花心思的!
    (id-15249) div 300最后问下div的用法MYSQL官网下载手册(免费),然后阅读DIV说明.
      

  7.   


    很简单,突然转不过弯,THANK YOU
    结贴