本人做管理的,对SQL不太熟悉,特请教坛子里的大侠两个sql查询的写法1:access 数据库
2:数据表table1
字段: p_code, issue_date, issue_num
典型数据:101,2016/12/1,45
                    102,2016/12/1,89
                    101,2016/12/3,44
....a:我想以今天的时间为时间点,找出这样的一个产品。以这个产品在过去的10个记录(天数有可能不连续,因为有周末,或者那天根本就没领用)的平均值为基础(今天的不列入均值计算),过去的10个记录每次领用的数值都在平均值上下5%波动,而今天的波动超过20%
每天计算作为预警。
    今天比昨天的简单比较通过学习http://bbs.csdn.net/topics/390704568这个帖子用left join我会了,再次感谢!
b:包含今天,同一个产品在过去的10个记录的领用总和达到一定数量比如500。每天查询找出这样的商品。
   我想在where里面用sum函数结果不行,估计得用临时表,但又不会.....
  请大概指点一下,我自己可以在access中调试,谢谢!
谢谢!

解决方案 »

  1.   

    用having筛选
      

  2.   

    where不能跟函数,用到函数应该用having
      

  3.   

    access 没有partition by
    下面是计算过去10条最近记录的和与平均值的SQL,你可以参考下select  t.p_code,sum(t.issue_num),avg(t.issue_num) from (
        SELECT t1.p_code,t1.issue_date,t1.issue_num,count(t2.id)+1 as SeqNo
       FROM Table1 as t1
       left join Table1 as t2 on t1.p_code=t2.p_code and t1.issue_date>t2.issue_date
       where t1.issue_date<now
       group by t1.p_code,t1.issue_date,t1.issue_num
    ) as t where t.SeqNo<=10
    group by t.p_code