需求:求库存的可销天数(按30天平均销量取值)(完了)
当日销售表
CC_JXC_GYS_DAY        RQ    DATE    N            日期
        MC    VARCHAR2(4)    N            卖场
        GYS    VARCHAR2(8)    N            供应商号
        GYSM    VARCHAR2(60)    Y            供应商名
        SPTM    VARCHAR2(13)    N            商品编码
        SPM    VARCHAR2(60)    Y            商品名
        PP    VARCHAR2(6)    Y            品牌号
        PPM    VARCHAR2(20)    Y            品牌名
        CD    VARCHAR2(6)    Y            产地号
        CDM    VARCHAR2(32)    Y            产地名
        DZXL    VARCHAR2(15)    N            类别号
        DZXLM    VARCHAR2(60)    Y            类别名
        DW    VARCHAR2(4)    Y            单位
        JYFS    CHAR(1)    N            经营方式
        LSJ    FLOAT    N            实际零售价
        XSSL    FLOAT    Y            销售数量
        XSJE    FLOAT    Y            实际销售额
        HSJJ    FLOAT    N            含税进价
        HSJJJE    FLOAT    Y            含税成本
        XSSLZB    FLOAT    Y            销售额
        XSSLPM    NUMBER    Y            含税毛利
        XSJEZB    FLOAT    Y            进销差价
        XSJEPM    FLOAT    Y            
        GYS_SLZB    FLOAT    Y            
        GYS_SLPM    FLOAT    Y            
        GYS_JEZB    FLOAT    Y            
        GYS_JEPM    FLOAT    Y            
        KCSL    FLOAT    Y            总折扣
        KCJE    FLOAT    Y            供应商折扣
        BAK1    VARCHAR2(13)    Y            商品条码
        BAK2    VARCHAR2(10)    Y            备用
库存表CC_STR_COM_HZ        RQ    DATE    N            日期
        SPTM    VARCHAR2(13)    N            商品编码
        SPM    VARCHAR2(60)    Y            商品名称
        MC    VARCHAR2(15)    N            卖场编码
        PP    VARCHAR2(6)    Y            品牌编码
        DZXL    VARCHAR2(15)    N            类别编码
        GZ    VARCHAR2(15)    N            柜组
        GYS    VARCHAR2(15)    N            供应商编码
        JYFS    FLOAT    N            经营方式
        ZHHSJJ    FLOAT    Y            最后含税进价
        ZHBHSJJ    FLOAT    Y            最后不含税进价
        KL    FLOAT    Y            扣率
        LSJ    FLOAT    Y            零售价
        KCSL    FLOAT    Y            库存数量
        KCBHSJE    FLOAT    Y            库存不含税金额
        KCHSJE    FLOAT    Y            库存含税金额
        KCLSJE    FLOAT    Y            库存零售金额
历史日销售表
CC_JXC_GYS_DAY_HIS    RQ    DATE    N            日期
        MC    VARCHAR2(4)    N            卖场
        GYS    VARCHAR2(8)    N            供应商号
        GYSM    VARCHAR2(60)    Y            供应商名
        SPTM    VARCHAR2(13)    N            商品编码
        SPM    VARCHAR2(60)    Y            商品名
        PP    VARCHAR2(6)    Y            品牌号
        PPM    VARCHAR2(20)    Y            品牌名
        CD    VARCHAR2(6)    Y            产地号
        CDM    VARCHAR2(32)    Y            产地名
        DZXL    VARCHAR2(15)    N            类别号
        DZXLM    VARCHAR2(60)    Y            类别名
        DW    VARCHAR2(4)    Y            单位
        JYFS    CHAR(1)    N            经营方式
        LSJ    FLOAT    N            实际零售价
        XSSL    FLOAT    Y            销售数量
        XSJE    FLOAT    Y            实际销售额
        HSJJ    FLOAT    N            含税进价
        HSJJJE    FLOAT    Y            含税成本
        XSSLZB    FLOAT    Y            销售额  同类别销售数量占比
        XSSLPM    NUMBER    Y            含税毛利
        XSJEZB    FLOAT    Y            进销差价
        XSJEPM    FLOAT    Y            同类别销售金额排名
        GYS_SLZB    FLOAT    Y            本供应商销售数量占比
        GYS_SLPM    FLOAT    Y            本供应商销售数量排名
        GYS_JEZB    FLOAT    Y            本供应商销售金额占比
        GYS_JEPM    FLOAT    Y            本供应商销售金额排名
        KCSL    FLOAT    Y            总折扣
        KCJE    FLOAT    Y            供应商折扣
        BAK1    VARCHAR2(13)    Y            商品条码
        BAK2    VARCHAR2(10)    Y            备用
SQL语句select *
  from (select t.*, rownum rn
          from (select a.kcsl,
                       a.spm,
                       c.name,
                       p.dsinventory,
                       d.dsinventory1,
                       e.dsinventory2,
                       g.dsinventory3,
                       f.dsinventory4
                  from (select gys, kCSL, sPM from CC_STR_COM_HZ) a,
                       (select name from INF_SHOP where fgs = 'C') c,
                       (select avg(dsinventory) as dsinventory
                          from (select (max(d.xssl) * 30) as dsinventory
                                  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 - 30
                                          from CC_JXC_GYS_DAY d
                                         group by d.rq
                                        having count(*) >= 1)
                                   and his.rq between his.rq and d.rq)) p,
                       (select avg(dsinventory1) as dsinventory1
                          from (select (max(d.xssl) * 7) as dsinventory1
                                  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 - 7
                                          from CC_JXC_GYS_DAY d
                                         group by d.rq
                                        having count(*) >= 1)
                                   and his.rq between his.rq and d.rq)) d,
                       (select avg(dsinventory2) as dsinventory2
                          from (select (max(d.xssl) * 14) as dsinventory2
                                  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 - 14
                                          from CC_JXC_GYS_DAY d
                                         group by d.rq
                                        having count(*) >= 1)
                                   and his.rq between his.rq and d.rq)) e,
                       (select avg(dsinventory4) as dsinventory4
                          from (select (max(d.xssl) * 45) as dsinventory4
                                  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 - 45
                                          from CC_JXC_GYS_DAY d
                                         group by d.rq
                                        having count(*) >= 1)
                                   and his.rq between his.rq and d.rq)) f,
                       (select avg(dsinventory3) as dsinventory3
                          from (select (max(d.xssl) * 30) as dsinventory3
                                  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 - 30
                                          from CC_JXC_GYS_DAY d
                                         group by d.rq
                                        having count(*) >= 1)
                                   and his.rq between his.rq and d.rq)) g) t
         where rownum < 1000)
 where rn > 1

解决方案 »

  1.   

    执行计划:
    Predicate Information (identified by operation id):
    ---------------------------------------------------   1 - filter("RN">1)
       2 - filter(ROWNUM<1000)
      13 - access("D"."GYS"="HIS"."GYS")
           filter("HIS"."RQ"<="D"."RQ")
      14 - access("HIS"."RQ"=INTERNAL_FUNCTION("$nso_col_1"))
      16 - filter(COUNT(*)>=1)
      19 - filter("HIS"."RQ">="HIS"."RQ")
      25 - access("D"."GYS"="HIS"."GYS")
           filter("HIS"."RQ"<="D"."RQ")
      26 - access("HIS"."RQ"=INTERNAL_FUNCTION("$nso_col_1"))
      28 - filter(COUNT(*)>=1)
      31 - filter("HIS"."RQ">="HIS"."RQ")
      33 - filter("FGS"='C')
      38 - access("D"."GYS"="HIS"."GYS")
           filter("HIS"."RQ"<="D"."RQ")
      39 - access("HIS"."RQ"=INTERNAL_FUNCTION("$nso_col_1"))
      41 - filter(COUNT(*)>=1)
      44 - filter("HIS"."RQ">="HIS"."RQ")
      50 - access("D"."GYS"="HIS"."GYS")
           filter("HIS"."RQ"<="D"."RQ")
      51 - access("HIS"."RQ"=INTERNAL_FUNCTION("$nso_col_1"))
      53 - filter(COUNT(*)>=1)
      56 - filter("HIS"."RQ">="HIS"."RQ")
      62 - access("D"."GYS"="HIS"."GYS")
           filter("HIS"."RQ"<="D"."RQ")
      63 - access("HIS"."RQ"=INTERNAL_FUNCTION("$nso_col_1"))
      65 - filter(COUNT(*)>=1)
      68 - filter("HIS"."RQ">="HIS"."RQ")Note
    -----
       - dynamic sampling used for this statement
    Statistics
    ----------------------------------------------------------
              0  recursive calls
              0  db block gets
          79925  consistent gets
              0  physical reads
              0  redo size
          45384  bytes sent via SQL*Net to client
           1515  bytes received via SQL*Net from client
             68  SQL*Net roundtrips to/from client
              4  sorts (memory)
              0  sorts (disk)
            998  rows processed
      

  2.   

    Execution Plan
    ----------------------------------------------------------
    Plan hash value: 535012280--------------------------------------------------------------------------------
    ------------------------------------| Id  | Operation                             | Name               | Rows  | Byt
    es |TempSpc| Cost (%CPU)| Time     |--------------------------------------------------------------------------------
    ------------------------------------|   0 | SELECT STATEMENT                      |                    |   999 |   1
    41K|       | 48827  (23)| 00:09:46 ||*  1 |  VIEW                                 |                    |   999 |   1
    41K|       | 48827  (23)| 00:09:46 ||*  2 |   COUNT STOPKEY                       |                    |       |
       |       |            |          ||   3 |    NESTED LOOPS                       |                    |   999 |   1
    05K|       | 48827  (23)| 00:09:46 ||   4 |     NESTED LOOPS                      |                    |     1 |
    80 |       | 48822  (23)| 00:09:46 ||   5 |      NESTED LOOPS                     |                    |     1 |
    67 |       | 39058  (23)| 00:07:49 ||   6 |       NESTED LOOPS                    |                    |     1 |
    54 |       | 29294  (23)| 00:05:52 ||   7 |        NESTED LOOPS                   |                    |     1 |
    41 |       | 19530  (23)| 00:03:55 ||   8 |         NESTED LOOPS                  |                    |     1 |
    26 |       | 19528  (23)| 00:03:55 ||   9 |          VIEW                         |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  10 |           SORT AGGREGATE              |                    |     1 |
    13 |       |            |          ||  11 |            VIEW                       |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  12 |             SORT AGGREGATE            |                    |     1 |
    39 |       |            |          ||* 13 |              HASH JOIN                |                    |  5723K|   2
    12M|  5400K|  9764  (23)| 00:01:58 ||* 14 |               HASH JOIN               |                    |   167K|  34
    32K|       |  3549   (5)| 00:00:43 ||  15 |                VIEW                   | VW_NSO_5           |     1 |
     6 |       |   556  (18)| 00:00:07 ||* 16 |                 FILTER                |                    |       |
       |       |            |          ||  17 |                  HASH GROUP BY        |                    |     1 |
     8 |       |   556  (18)| 00:00:07 ||  18 |                   INDEX FAST FULL SCAN| INDEX_RQ_MC_GYS    |   541K|  42
    31K|       |   474   (3)| 00:00:06 ||* 19 |                TABLE ACCESS FULL      | CC_JXC_GYS_DAY_HIS |   502K|  73
    54K|       |  2983   (2)| 00:00:36 ||  20 |               TABLE ACCESS FULL       | CC_JXC_GYS_DAY     |   541K|  95
    21K|       |  3163   (2)| 00:00:38 ||  21 |          VIEW                         |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  22 |           SORT AGGREGATE              |                    |     1 |
    13 |       |            |          ||  23 |            VIEW                       |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  24 |             SORT AGGREGATE            |                    |     1 |
    39 |       |            |          ||* 25 |              HASH JOIN                |                    |  5723K|   2
    12M|  5400K|  9764  (23)| 00:01:58 ||* 26 |               HASH JOIN               |                    |   167K|  34
    32K|       |  3549   (5)| 00:00:43 ||  27 |                VIEW                   | VW_NSO_4           |     1 |
     6 |       |   556  (18)| 00:00:07 ||* 28 |                 FILTER                |                    |       |
       |       |            |          ||  29 |                  SORT GROUP BY        |                    |     1 |
     8 |       |   556  (18)| 00:00:07 ||  30 |                   INDEX FAST FULL SCAN| INDEX_RQ_MC_GYS    |   541K|  42
    31K|       |   474   (3)| 00:00:06 ||* 31 |                TABLE ACCESS FULL      | CC_JXC_GYS_DAY_HIS |   502K|  73
    54K|       |  2983   (2)| 00:00:36 ||  32 |               TABLE ACCESS FULL       | CC_JXC_GYS_DAY     |   541K|  95
    21K|       |  3163   (2)| 00:00:38 ||* 33 |         TABLE ACCESS FULL             | INF_SHOP           |     2 |
    30 |       |     2   (0)| 00:00:01 ||  34 |        VIEW                           |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  35 |         SORT AGGREGATE                |                    |     1 |
    13 |       |            |          ||  36 |          VIEW                         |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  37 |           SORT AGGREGATE              |                    |     1 |
    39 |       |            |          ||* 38 |            HASH JOIN                  |                    |  5723K|   2
    12M|  5400K|  9764  (23)| 00:01:58 ||* 39 |             HASH JOIN                 |                    |   167K|  34
    32K|       |  3549   (5)| 00:00:43 ||  40 |              VIEW                     | VW_NSO_2           |     1 |
     6 |       |   556  (18)| 00:00:07 ||* 41 |               FILTER                  |                    |       |
       |       |            |          ||  42 |                SORT GROUP BY          |                    |     1 |
     8 |       |   556  (18)| 00:00:07 ||  43 |                 INDEX FAST FULL SCAN  | INDEX_RQ_MC_GYS    |   541K|  42
    31K|       |   474   (3)| 00:00:06 ||* 44 |              TABLE ACCESS FULL        | CC_JXC_GYS_DAY_HIS |   502K|  73
    54K|       |  2983   (2)| 00:00:36 ||  45 |             TABLE ACCESS FULL         | CC_JXC_GYS_DAY     |   541K|  95
    21K|       |  3163   (2)| 00:00:38 ||  46 |       VIEW                            |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  47 |        SORT AGGREGATE                 |                    |     1 |
    13 |       |            |          ||  48 |         VIEW                          |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  49 |          SORT AGGREGATE               |                    |     1 |
    39 |       |            |          ||* 50 |           HASH JOIN                   |                    |  5723K|   2
    12M|  5400K|  9764  (23)| 00:01:58 ||* 51 |            HASH JOIN                  |                    |   167K|  34
    32K|       |  3549   (5)| 00:00:43 ||  52 |             VIEW                      | VW_NSO_3           |     1 |
     6 |       |   556  (18)| 00:00:07 ||* 53 |              FILTER                   |                    |       |
       |       |            |          ||  54 |               SORT GROUP BY           |                    |     1 |
     8 |       |   556  (18)| 00:00:07 ||  55 |                INDEX FAST FULL SCAN   | INDEX_RQ_MC_GYS    |   541K|  42
    31K|       |   474   (3)| 00:00:06 ||* 56 |             TABLE ACCESS FULL         | CC_JXC_GYS_DAY_HIS |   502K|  73
    54K|       |  2983   (2)| 00:00:36 ||  57 |            TABLE ACCESS FULL          | CC_JXC_GYS_DAY     |   541K|  95
    21K|       |  3163   (2)| 00:00:38 ||  58 |      VIEW                             |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  59 |       SORT AGGREGATE                  |                    |     1 |
    13 |       |            |          ||  60 |        VIEW                           |                    |     1 |
    13 |       |  9764  (23)| 00:01:58 ||  61 |         SORT AGGREGATE                |                    |     1 |
    39 |       |            |          ||* 62 |          HASH JOIN                    |                    |  5723K|   2
    12M|  5400K|  9764  (23)| 00:01:58 ||* 63 |           HASH JOIN                   |                    |   167K|  34
    32K|       |  3549   (5)| 00:00:43 ||  64 |            VIEW                       | VW_NSO_1           |     1 |
     6 |       |   556  (18)| 00:00:07 ||* 65 |             FILTER                    |                    |       |
       |       |            |          ||  66 |              SORT GROUP BY            |                    |     1 |
     8 |       |   556  (18)| 00:00:07 ||  67 |               INDEX FAST FULL SCAN    | INDEX_RQ_MC_GYS    |   541K|  42
    31K|       |   474   (3)| 00:00:06 ||* 68 |            TABLE ACCESS FULL          | CC_JXC_GYS_DAY_HIS |   502K|  73
    54K|       |  2983   (2)| 00:00:36 ||  69 |           TABLE ACCESS FULL           | CC_JXC_GYS_DAY     |   541K|  95
    21K|       |  3163   (2)| 00:00:38 ||  70 |     TABLE ACCESS FULL                 | CC_STR_COM_HZ      |   999 | 279
    72 |       |     5   (0)| 00:00:01 |--------------------------------------------------------------------------------
    ------------------------------------