zoukankan      html  css  js  c++  java
  • day09 返修率

    select * from sdata.dbo.cost_detail
    drop table sdata.dbo.cost_detail_now


    --根据SERVICE_ORDER_LINE 取最小的值 因为一个订单 可能换的很多零件,只统计一个--
    select *
    into sdata.dbo.cost_detail_now
    from (
    select COUNTRY_ID
    , MACHINE_SERIAL_NUMBER
    ,SERVICE_ORDER_ID
    ,SERVICE_ORDER_LINE
    ,SERVICE_ORDER_CREATION_DATE
    ,PRODUCT_GROUP_OPS
    ,service_order_closure_date
    ,ROW_NUMBER() over(partition by MACHINE_SERIAL_NUMBER
    ,SERVICE_ORDER_ID order by SERVICE_ORDER_LINE asc) as rows
    from sdata.dbo.cost_detail) a
    where rows = 1
    select * from sdata.dbo.cost_detail_now


    --根据两次返修的日期 算返修率 根据型号统计两次返修相差多少天--
    drop table pdata.dbo.kpi_rrr
    select
    now1.COUNTRY_ID
    ,now1.MACHINE_SERIAL_NUMBER
    ,now1.PRODUCT_GROUP_OPS
    ,now1.SERVICE_ORDER_CREATION_DATE SERVICE_ORDER_CREATION_DATE_now
    ,now1.Service_Order_Closure_Date Service_Order_Closure_Date_now
    --,before.MACHINE_SERIAL_NUMBER
    ,now1.SERVICE_ORDER_ID
    --,before.SERVICE_ORDER_ID
    ,before.SERVICE_ORDER_CREATION_DATE SERVICE_ORDER_CREATION_DATE_before
    ,before.Service_Order_Closure_Date Service_Order_Closure_Date_before
    --相差多少天--
    ,DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date )) day_count

    --统计>30或60或90的--
    ,case when DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date ))>=30 then 1 else 0 end rrr_30
    ,case when DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date ))>=60 then 1 else 0 end rrr_60
    ,case when DATEDIFF(dd,cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    ,cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date ))>=90 then 1 else 0 end rrr_90

    into pdata.dbo.kpi_rrr
    from sdata.dbo.cost_detail_now now1
    left join sdata.dbo.cost_detail_now before
    on now1.MACHINE_SERIAL_NUMBER = before.MACHINE_SERIAL_NUMBER
    and cast(case when now1.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else now1.SERVICE_ORDER_CREATION_DATE end as date )
    >= cast(case when before.SERVICE_ORDER_CREATION_DATE='00:00.0' then null else before.SERVICE_ORDER_CREATION_DATE end as date )
    where before.MACHINE_SERIAL_NUMBER is not null

    select * from pdata.dbo.kpi_rrr

    --根据 ops 日期 统计求和--
    select COUNTRY_ID
    ,PRODUCT_GROUP_OPS
    ,CONVERT(varchar(7),cast(SERVICE_ORDER_CREATION_DATE_now as date),120) month
    ,sum(rrr_30) rrr_30
    ,sum(rrr_60) rrr_60
    ,sum(rrr_90) rrr_90
    into pmart.dbo.kpi_rrr_sum
    from pdata.dbo.kpi_rrr
    group by
    COUNTRY_ID
    ,PRODUCT_GROUP_OPS
    ,CONVERT(varchar(7),cast(SERVICE_ORDER_CREATION_DATE_now as date),120)


    --按照rrr_30的进行分组排序--
    select*from (
    select *,
    ROW_NUMBER() over(partition by PRODUCT_GROUP_OPS order by rrr_30 desc ) as rov_sum
    from pmart.dbo.kpi_rrr_sum)a
    where rov_sum <=5


    --统计两个日期间的天数--
    select DATEDIFF(dd,'2008-11-29','2008-11-30')

  • 相关阅读:
    django系列5.4--ORM中执行原生SQL语句, Python脚本中调用django环境
    Cookie背景了解
    [leetcode] 832. Flipping an Image
    [leetcode] 888. Fair Candy Swap
    [leetcode] 66. Plus One
    0000:Deep Learning Papers Reading Roadmap
    [算法]时间复杂度
    [leetcode] 771. Jewels and Stones
    [cs231n] Convolutional Neural Networks for Visual Recognition
    推翻自己,从头来过
  • 原文地址:https://www.cnblogs.com/simly/p/9488442.html
Copyright © 2011-2022 走看看