Fun_GetHumpDiff.md 1.55 KB

Fun_GetHumpDiff (function)

获取驼峰之间的差值

  • Type: FUNCTION
  • Returns: varchar(255)
  • Deterministic: NO
  • SQL data access: CONTAINS SQL

Parameters

# Mode Name Type
1 IN p_sData longtext

Body

Body is not pre-cached. To inspect: mysql --defaults-file=~/.my.cnf -e 'SHOW CREATE FUNCTIONFunGetHumpDiff'._

Narrative

Business context: "Hump" (峰) difference — 获取驼峰之间的差值. Takes a comma-separated integer time-series and sums the rise heights of every monotonically increasing run (peak − trough), then totals them. Used by the production-dashboard reports to derive output-counter deltas from monotonically-resetting machine counters.

What it does: two-pass. Pass 1 normalizes the series — for each comma-token, if the value drops vs. previous, inserts a 0 between them; this re-anchors each rising run to start from 0. Pass 2 walks the normalized series tracking current p_min and p_max; on each descent or at end-of-series, adds max-min to p_diff. Returns p_diff.

Invocation: widely used by the production-board (bd_ = 报表板/business dashboard) family — Sp_Bd_bi16…bi24, Sp_Bd_cq_workshop_* (车间 workshop boards: hh/mt/pj/pm/sy/ys), Sp_Bd_hy_workshop_oy, Sp_bd_MachinePlanTemplate* (机台计划 templates), Sp_bd_McPlanConter, Sp_bd_McPlanRate, Sp_bd_TmComplianceRate*, Sp_bd_TmSpeed*, Sp_bd_TmYield*. Customer override exists at script/客户/.../Sp_Bd_Cqzy_Report* (前一天/今天 白班/晚班).