日期:2014-05-17  浏览次数:20671 次

请问一下此SQL如何优化.大数据集.
情况说明一下:
需求:取出30天的平均销量.
此SQL是取出平均值.
需要30天的话 就 * 30就可以了




select avg(d.xssl)
  from CC_JXC_GYS_DAY d
 inner join CC_JXC_GYS_DAY_HIS his
    on d.gys = his.gys
 where his.rq in (select distinct d.rq
                    from CC_JXC_GYS_DAY d
                   group by d.rq
                  having count(*) >= 1)
   and his.rq between his.rq and d.rq



------解决方案--------------------
select distinct d.rq - 30
from CQ_JXC_GYS_DAY d
 group by d.rq
having count(*) >= 1

通过取出当日销售表里的日期-30天.获得30天前的日期.
为什么这么取?

当日销售表里的日期-30天?
取当天的日期-30不久OK了,如果没有的话也是销售表里取最大日期-30不久OK了?