Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.43 KB | None | 0 0
  1. CREATE OR REPLACE VIEW boxes_send_to_qc_view
  2.     AS
  3.     SELECT trunc(max_created, 'HH') AS created,
  4.         COUNT (*) AS num_boxes_send_to_qc,
  5.         qcreason
  6.     FROM (
  7.         SELECT boxid,
  8.             MAX(created) AS max_created,
  9.             qcreason
  10.         FROM qcdwhitem
  11.             WHERE
  12.                 qcreason IS NOT NULL AND
  13.                 qcreason <> 'OUT_OF_STOCK'
  14.                 AND ISUSEDFORQCDASHBOARDSTATISTIC = 0
  15.         GROUP BY
  16.             boxid,
  17.             qcreason
  18.         )
  19.     GROUP BY
  20.         trunc(max_created, 'HH'),
  21.         qcreason
  22.     ORDER BY trunc(max_created, 'HH') ASC;
  23.  
  24. CREATE OR REPLACE VIEW boxes_produced_view
  25.     AS
  26.     SELECT trunc(min_created, 'HH') AS created,
  27.         COUNT (*) AS num_boxes_produced
  28.     FROM (
  29.         SELECT boxid,
  30.             MIN(created) AS min_created
  31.         FROM qcdwhitem
  32.         WHERE
  33.             isboxproduced = '1'
  34.             AND ISUSEDFORQCDASHBOARDSTATISTIC = 0
  35.         GROUP BY
  36.             boxid
  37.         )
  38.     GROUP BY
  39.         trunc(min_created, 'HH')
  40.     ORDER BY trunc(min_created, 'HH') ASC;
  41.  
  42. CREATE OR REPLACE VIEW boxes_checked_view
  43.     AS
  44.     SELECT COUNT(*) AS num_boxes_checked,
  45.         timechecked AS created
  46.     FROM (
  47.         SELECT DISTINCT boxid,
  48.             trunc(created, 'HH') AS timechecked
  49.         FROM stationload
  50.         WHERE
  51.             ROLE = 'QC'
  52.             AND tuaction = 'TU_LEFT'
  53.             AND ISUSEDFORQCDASHBOARDSTATISTIC = 0
  54.         )
  55.     GROUP BY
  56.         timechecked
  57.     ORDER BY timechecked ASC;
  58.  
  59. CREATE OR REPLACE VIEW boxes_with_errors_view
  60.     AS
  61.     SELECT COUNT(*) AS num_boxes_with_errors,
  62.         timest AS created,
  63.         qcreason
  64.     FROM (
  65.         SELECT DISTINCT boxid,
  66.             qcreason,
  67.             trunc(created, 'HH') AS timest
  68.         FROM qcoperationdwhitem
  69.         WHERE
  70.             newdeliveredquantity <> requestedquantity
  71.             AND ISUSEDFORQCDASHBOARDSTATISTIC = 0
  72.         )
  73.     GROUP BY
  74.         timest,
  75.         qcreason
  76.     ORDER BY timest ASC
  77.  
  78. CREATE OR REPLACE VIEW qc_dashboard_statistics_view
  79.     AS
  80.     SELECT TO_DATE(TO_CHAR(dr.the_hour,'DD/MM/YYYY HH24:MI:SS'), 'DD/MM/YYYY HH24:MI:SS') AS CREATED,
  81.         dr.qcreason AS QCREASON,
  82.         NVL(to_qc.num_boxes_send_to_qc,0) AS NUMBOXESSENTTOQC,
  83.         NVL(produced.num_boxes_produced,0) AS NUMBOXESPRODUCED,
  84.         NVL(checked.num_boxes_checked,0) AS NUMBOXESCHECKED,
  85.         NVL(with_errors.num_boxes_with_errors,0) AS NUMBOXESWITHERRORS
  86.     FROM date_range_view dr
  87.         LEFT OUTER JOIN boxes_send_to_qc_view to_qc
  88.             ON to_qc.created = dr.the_hour
  89.             AND to_qc.qcreason = dr.qcreason
  90.         LEFT OUTER JOIN boxes_produced_view produced
  91.             ON produced.created = dr.the_hour
  92.         LEFT OUTER JOIN boxes_checked_view checked
  93.             ON checked.created = dr.the_hour
  94.         LEFT OUTER JOIN boxes_with_errors_view with_errors
  95.             ON with_errors.created = dr.the_hour
  96.             AND with_errors.qcreason = dr.qcreason
  97.     ORDER BY dr.the_hour DESC;
  98.  
  99.    CREATE OR REPLACE PROCEDURE update_qc_dashboard
  100.      AS
  101.    BEGIN
  102.          MERGE INTO QCDASHBOARDSTATISTICS s
  103.               USING qc_dashboard_statistics_view v
  104.               ON (v.qcreason = s.QCREASON AND v.created=s.CREATED)
  105.               WHEN MATCHED THEN UPDATE
  106.                   SET s.NUMBOXESSENTTOQC = s.NUMBOXESSENTTOQC + v.NUMBOXESSENTTOQC,
  107.                   s.NUMBOXESPRODUCED = s.NUMBOXESPRODUCED + v.NUMBOXESPRODUCED,
  108.                   s.NUMBOXESCHECKED = s.NUMBOXESCHECKED + v.NUMBOXESCHECKED,
  109.                   s.NUMBOXESWITHERRORS = s.NUMBOXESWITHERRORS + v.NUMBOXESWITHERRORS,
  110.                   s.BOXCHECKRATE = ROUND(NVL(s.NUMBOXESSENTTOQC / NULLIF(s.NUMBOXESPRODUCED,0),0) * 100),
  111.                   s.CHECKEDBOXESERRORRATE = ROUND(NVL(s.NUMBOXESWITHERRORS / NULLIF(s.NUMBOXESCHECKED,0),0) * 100),
  112.                   s.INTERNALERRORRATE = ROUND(NVL(s.NUMBOXESWITHERRORS / NULLIF(s.NUMBOXESPRODUCED,0),0) * 100)
  113.               WHEN NOT MATCHED THEN INSERT(CREATED, QCREASON, NUMBOXESSENTTOQC, NUMBOXESPRODUCED, NUMBOXESCHECKED, BOXCHECKRATE, NUMBOXESWITHERRORS, CHECKEDBOXESERRORRATE, INTERNALERRORRATE)
  114.               VALUES(v.CREATED, v.QCREASON, v.NUMBOXESSENTTOQC, v.NUMBOXESPRODUCED, v.NUMBOXESCHECKED, ROUND(NVL(v.NUMBOXESSENTTOQC / NULLIF( v.NUMBOXESPRODUCED,0),0) * 100), v.NUMBOXESWITHERRORS, ROUND(NVL(v.NUMBOXESWITHERRORS / NULLIF(v.NUMBOXESCHECKED,0),0) * 100), ROUND(NVL(v.NUMBOXESWITHERRORS / NULLIF(v.NUMBOXESPRODUCED,0),0) * 100));
  115.          UPDATE STATIONLOAD SET ISUSEDFORQCDASHBOARDSTATISTIC = 1;
  116.          UPDATE QCDWHITEM SET ISUSEDFORQCDASHBOARDSTATISTIC = 1;
  117.          UPDATE QCOPERATIONDWHITEM SET ISUSEDFORQCDASHBOARDSTATISTIC = 1;
  118.    END update_qc_dashboard;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement