BNA8/.resources/27cc00959b1bf965c2fe8a3601e24a008a0030ed23067fd974dac1695077a8f3

73 lines
2.5 KiB
Plaintext

WITH LANES_SUCCESS AS (
SELECT
MIN(s04_timestamp) AS start_timestamp,
MAX(s04_timestamp) AS end_timestamp,
sorter,
destination_act AS lane,
COUNT(*) AS total
FROM package_history a
WHERE s04_timestamp BETWEEN :startDate AND :endDate
GROUP BY sorter, s04_act_dest
), LANES_FAIL_REQ AS (
SELECT
MIN(s04_timestamp) AS start_timestamp,
MAX(s04_timestamp) AS end_timestamp,
sorter,
CONCAT(sorter, LPAD(s02_req_dest, 2, '0')) AS lane,
SUM(req_dest_reason=5) AS dest_full,
SUM(req_dest_reason=6) AS dest_fault,
SUM(req_dest_reason=12) AS dest_disabled
FROM package_history
WHERE s04_timestamp BETWEEN :startDate AND :endDate
AND s04_act_dest != s02_req_dest
GROUP BY sorter, s02_req_dest
), LANES_FAIL_ALT AS (
SELECT
MIN(s04_timestamp) AS start_timestamp,
MAX(s04_timestamp) AS end_timestamp,
sorter,
CONCAT(sorter, LPAD(s02_alt_dest, 2, '0')) AS lane,
SUM(alt_dest_reason=5) AS dest_full,
SUM(alt_dest_reason=6) AS dest_fault,
SUM(alt_dest_reason=12) AS dest_disabled
FROM package_history
WHERE s04_timestamp BETWEEN :startDate AND :endDate
AND s04_act_dest != s02_alt_dest
GROUP BY sorter, s02_alt_dest
), LANES AS (
SELECT
LEAST(s.start_timestamp, IFNULL(r.start_timestamp, s.start_timestamp), IFNULL(r.start_timestamp, a.start_timestamp)) AS start_timestamp,
GREATEST(s.end_timestamp, IFNULL(r.end_timestamp, s.end_timestamp), IFNULL(r.end_timestamp, a.end_timestamp)) AS end_timestamp,
3600/TIMESTAMPDIFF(SECOND, :startDate, :endDate) AS pph_multiplier,
s.sorter,
s.lane,
s.total,
IFNULL(r.dest_full, 0)+IFNULL(a.dest_full, 0) AS dest_full,
IFNULL(r.dest_fault, 0)+IFNULL(a.dest_fault, 0) AS dest_fault,
IFNULL(r.dest_disabled, 0)+IFNULL(a.dest_disabled, 0) AS dest_disabled
FROM LANES_SUCCESS s
LEFT JOIN LANES_FAIL_REQ r ON s.sorter=r.sorter AND s.lane=r.lane
LEFT JOIN LANES_FAIL_ALT a ON s.sorter=a.sorter AND s.lane=a.lane
)
SELECT
start_timestamp,
end_timestamp,
sorter,
lane,
/* Counts: */
total AS total_count,
dest_full AS dest_full_count,
dest_fault AS dest_fault_count,
dest_disabled AS dest_disabled_count,
/* PPH: */
ROUND(total*pph_multiplier) AS total_pph,
ROUND(dest_full*pph_multiplier) AS dest_full_pph,
ROUND(dest_fault*pph_multiplier) AS dest_fault_pph,
ROUND(dest_disabled*pph_multiplier) AS dest_disabled_pph,
/* Percents: */
ROUND(total/total, 4) AS total_percent,
ROUND(dest_full/total, 4) AS dest_full_percent,
ROUND(dest_fault/total, 4) AS dest_fault_percent,
ROUND(dest_disabled/total, 4) AS dest_disabled_percent
FROM LANES
ORDER BY sorter, lane;