作业中要用到关于 日子对应值的相加譬如 日期id  3  对应  price 是34现在问题是要求我选定一个日期id  然后求出这个日期id 之前 15天的平均price值
现在我的思路是  先求出 id 和之前 14天的price SUM值 但是用 WHERE BETWEEN AND 这个语句  好像不能写成 X-14   AND  X
新手刚学   求助  谢谢了

解决方案 »

  1.   

    不清楚你的要减的日期列的数据是怎样的,建议你列出测试数据清晰下吧
    mysq里面有日期处理函数,如:
    mysql> select now();
    +---------------------+
    | now()               |
    +---------------------+
    | 2009-08-25 13:47:52 |
    +---------------------+
    1 row in set (0.03 sec)mysql> select date_add(now(),interval -14 day);
    +----------------------------------+
    | date_add(now(),interval -14 day) |
    +----------------------------------+
    | 2009-08-11 13:48:11              |
    +----------------------------------+
    1 row in set (0.02 sec)mysql>
      

  2.   

    日期id 是个什么数据? 日期型还是你所说的 "譬如 日期id  3" 象个数字? 如果是数字如果计算 前 14天 ?如果是日期则可以where fldDate between date_sub('2009-08-25', interval 14 day) and '2009-08-25'
      

  3.   

    谢谢楼上的我的日期类型只是一个INT 类型 不是 日期的 格式  整个表格是  stockid    timeid   price 
     
    timeid 是一个整数类型  12  或者 30 都可以我的问题是如果我随机 选了一个timeid 是 25 
    我要算出25之前14天 一共的 price 总和  这样的话要怎么算
      

  4.   

    timeid  是与日期对应的吗?比如 25 对应 2009-06-21 那 24 就一定对应 2009-06-20 ? 这一点我无法猜测出。如果是这样select avg(price) from yourtabe where timeid between 25-14 and 25
    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
      

  5.   

    where fldDate between 25-14 and 25
     
    but you must consider that the day of 1,and the statement is
     
    where fldDate between 32-14 and 1
    ...
      

  6.   

    主要是需要猜以下方面太复杂了。1.  timeid    是否与日期连续对应?还是与工作日对应?
    2  前14 天是哪些天,自然日?工作日? 
    3  前14天平均是从 -14,-13 , ... -1 这14天还是需要加上当天即 -14,-13,--,-1,0 这一共 15 天? 或者其它?
      

  7.   

    4楼这个写法我试过了 但是我的mysql 好像无法识别 25-14这个值  显示的只是25那个值出来
      

  8.   


    timeid 只是一个整数  不用去对应真实的日期格式   譬如我要第二十五天  我timeid就是25 这个意思
      

  9.   

    好像我翻译的有点误导大家了timeid 是一个整数的意思不用去对应真实日期譬如题目我随机选一个timeid 25   意思就是 我选第25天然后取 第二十五天的  15天price 平均值题目有个例子表达了 2天平均值的算法   就是 取当天timeid  X 的price  加上 X 前一天 price  除2所以 如果要算第二十五天的  15天平均值   我取的是 25  加上之前的  一直加到 25 - 14
      

  10.   

    TABLE  stockid  
    三个attribute  : stockid   timeid   price题目要求 :   随机选一个timeid X  要求print出  这个 X 的十五天 price 平均值题目里有一个例子  是 两天平均值  stockid    timeid  price 
      1          4       10
      1           5      20
      1           6      30依着这个例子    timeid  为 5 的时候   两天平均值是  (10+ 20)/ 2 等于 15
    timeid 为 6 的时候   两天平均值是 20+30  /2  为25  
      

  11.   

    mysql> select * from stockid;
    +---------+--------+-------+
    | stockid | timeid | price |
    +---------+--------+-------+
    |       1 |      4 |    10 |
    |       1 |      5 |    20 |
    |       1 |      6 |    30 |
    +---------+--------+-------+
    3 rows in set (0.00 sec)mysql> -- timeid  为 5 的时候   两天平均值是  (10+ 20)/ 2 等于 15
    mysql> select avg(price)
        -> from stockid
        -> where timeid between 5-1 and 5;
    +------------+
    | avg(price) |
    +------------+
    |    15.0000 |
    +------------+
    1 row in set (0.03 sec)mysql> -- timeid 为 6 的时候   两天平均值是 20+30  /2  为25
    mysql> select avg(price)
        -> from stockid
        -> where timeid between 6-1 and 6;
    +------------+
    | avg(price) |
    +------------+
    |    25.0000 |
    +------------+
    1 row in set (0.00 sec)mysql>
      

  12.   


    谢谢了大哥  还有个要求 能不能在这个语句的基础上加一个东西  题目要求 print出 stockid 和timeid出来  stockid 我用group by  但是timeid 不知道要在哪里添加
      

  13.   

    建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。希望你不会继续再改你的需求了。timeid  你可以加一个 max(timeid) 得到
      

  14.   

    佩服佩服  一个max 实在高  谢谢了