zhizhijie
2026-09-19 3a41fcfb3af3d80ba3b60b658d62c38e84a9a7d8
refactor(货运): 汇总类查询小数位统一为4位(等于全精度) + 适用范围验证

- 查询1/3/5/8的14处 /10000,2) 改为4位;明细类维持不套ROUND
- 实测:货运量/周转量取4位后与原始值不同的为0家(754个对象);运距628/631、同比541/754会截断
- 改后脚本输出与545家交付件市州汇总逐列对齐(武汉9405.2643/1501661.4035)
- 测试报告补至30条用例,工作日结同步
3个文件已修改
82 ■■■■■ 已修改文件
docs/功能测试报告/功能测试报告_同名企业1-8月累计货运量与周转量SQL_2026-09-19.md 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/工作日结/工作日结_2026-09-19.md 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/生成汇总大表/同名企业_1-8月累计对比_2026-09-19.sql 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ͬÃûÆóÒµ1-8ÔÂÀۼƻõÔËÁ¿ÓëÖÜתÁ¿SQL_2026-09-19.md
@@ -160,9 +160,40 @@
**实践含义**:查询 7 = æŸ¥è¯¢ 2 + æ”¹åä¼ä¸šï¼ˆä¿¡ç”¨ä»£ç å£å¾„是名称口径的超集),两者共同部分数值完全相同。
要跟 545 å®¶äº¤ä»˜ä»¶å¯¹è´¦ç”¨æŸ¥è¯¢ 2;要防将来再出现改名企业,用查询 7 æ›´ç¨³ã€‚
## ä¹ã€ç»“论
## ä¹ã€è¡¥å……:汇总类查询同步改为 4 ä½å°æ•°ï¼ˆ2026-09-19 è¿½åŠ ï¼‰
8 æ¡æŸ¥è¯¢æ•´è„šæœ¬æ‰§è¡Œé€šè¿‡ï¼Œ26 æ¡ç”¨ä¾‹ï¼ˆ17 æ­£å‘ / 2 è´Ÿå‘ / 7 è¾¹ç•Œï¼‰å…¨éƒ¨é€šè¿‡ã€‚
**背景**:确认「4 ä½å°æ•°ã€å¯¹å“ªäº›åˆ—等于全精度后,决定把汇总类查询也统一为 4 ä½ã€‚
**先厘清"4 ä½ = å…¨ç²¾åº¦"的适用范围**(实测 754 ä¸ªä¼ä¸š/信用代码):
| åˆ— | `ROUND(v,4) <> v` çš„å®¶æ•° | ç»“论 |
| --- | --- | --- |
| è´§è¿é‡ 2025 / 2026 | **0 å®¶** | 4 ä½å³å…¨ç²¾åº¦ï¼ˆæ•´å¨ Ã· 10000,最多 4 ä½å°æ•°ï¼‰ |
| å‘¨è½¬é‡ 2025 / 2026 | **0 å®¶** | åŒä¸Š |
| å¹³å‡è¿è· | 628 / 631 å®¶ | **不等于**全精度,是除出来的商,需单独定位数 |
| åŒæ¯”百分比 | 541 / 754 å®¶ | **不等于**全精度,同上 |
**处置**:
- æ˜Žç»†ç±»ï¼ˆæŸ¥è¯¢ 2、7)已不套 ROUND = å…¨ç²¾åº¦ï¼Œæ— éœ€æ”¹åŠ¨ï¼›
- æ±‡æ€»ç±»ï¼ˆæŸ¥è¯¢ 1、3、5、8)的 14 å¤„ `/ 10000, 2)` å…¨éƒ¨æ”¹ä¸º 4 ä½ï¼›
- é¡¶éƒ¨ã€Œâ˜… å°æ•°ä½çº¦å®šã€åŒæ­¥æ›´æ–°ä¸º"汇总类同样保留 4 ä½";
- é¡¶éƒ¨ä¸ŽæŸ¥è¯¢ 8 æ³¨é‡Šé‡Œçš„实测值一并更新为 4 ä½ã€‚
**回归验证**:
| ç¼–号 | ç±»åž‹ | ç”¨ä¾‹ | é¢„期 | å®žé™… | ç»“论 |
| --- | --- | --- | --- | --- | --- |
| T27 | æ­£å‘ | æ•´è„šæœ¬é‡è·‘ | æ— æŠ¥é”™ã€è¡Œæ•°ä¸å˜ | 1352 è¡Œè¾“出,无 ERROR | é€šè¿‡ |
| T28 | æ­£å‘ | æŸ¥è¯¢ 1 æ±‡æ€»ï¼ˆ545 å®¶ï¼‰ | 4 ä½å°æ•° | 30153.1392 / 27752.6820 / 4635340.4627 / 4389882.0468 | é€šè¿‡ |
| T29 | æ­£å‘ | æŸ¥è¯¢ 8 åˆè®¡ï¼ˆ546 å®¶ï¼‰ | 4 ä½å°æ•° | 30162.9872 / 27764.8812 / 4637038.5803 / 4392984.8116 | é€šè¿‡ |
| T30 | æ­£å‘ | æŸ¥è¯¢ 5 åˆ†å¸‚州与交付件对齐 | ä¸Žäº¤ä»˜ä»¶å¸‚州汇总一致 | æ­¦æ±‰ 9405.2643 / 1501661.4035、宜昌 5247.5232 / 449997.1831,与交付件完全一致 | é€šè¿‡ |
**副作用为零**:对货运量/周转量而言 4 ä½å°±æ˜¯å…¨ç²¾åº¦ï¼Œå› æ­¤è¿™æ¬¡æ”¹åŠ¨æ²¡æœ‰ä¸¢å¤±ä»»ä½•æ•°æ®ï¼›
但脚本输出现在与 545 å®¶äº¤ä»˜ä»¶çš„市州汇总**逐列对齐**,两个口径之间可以互相验证。
## åã€ç»“论
8 æ¡æŸ¥è¯¢æ•´è„šæœ¬æ‰§è¡Œé€šè¿‡ï¼Œ30 æ¡ç”¨ä¾‹ï¼ˆ21 æ­£å‘ / 2 è´Ÿå‘ / 7 è¾¹ç•Œï¼‰å…¨éƒ¨é€šè¿‡ã€‚
**同名企业口径(545 å®¶ï¼‰1-8 æœˆç´¯è®¡ç»“果:**
docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-19.md
@@ -79,6 +79,9 @@
- è¿½åŠ éªŒè¯ï¼šæŸ¥è¯¢ 2(545 å®¶åç§°å£å¾„)与查询 7(546 å®¶ä»£ç å£å¾„)**剔除改名企业后逐比特完全相等**
  ï¼ˆ545 è¡Œä¼ä¸šåå•一致,8 ä¸ªæ•°å€¼åˆ— + åœ°åŒºä»£ç æœ€å¤§å·®å‡ä¸º 0)。原因是匹配键一一对应 + æ•´æ•°æ±‚和精确。
  å·²è®°ä¸ºæµ‹è¯•报告 T26(累计 26 æ¡ç”¨ä¾‹ï¼‰ã€‚
- è¿½åŠ ï¼šç¡®è®¤ã€Œ4 ä½å°æ•°ã€çš„适用范围(货运量/周转量 4 ä½å³å…¨ç²¾åº¦ï¼Œ754 ä¸ªå¯¹è±¡ 0 ä¾‹å¤–ï¼›
  è¿è·ã€åŒæ¯”不等于全精度),据此把汇总类查询(1/3/5/8)的 14 å¤„小数位统一为 4 ä½ã€‚
  æ”¹åŽè„šæœ¬è¾“å‡ºä¸Ž 545 å®¶äº¤ä»˜ä»¶å¸‚州汇总逐列对齐(T27~T30,累计 30 æ¡ç”¨ä¾‹ï¼‰ã€‚
## äºŒã€æµ‹è¯•结果摘要
见《功能测试报告_持续在规企业545家分市州累计运距同比_2026-09-19.md》:11 æ¡ç”¨ä¾‹ï¼ˆ7 æ­£å‘ / 3 è¾¹ç•Œ / 1 è´Ÿå‘)全部通过。
docs/Éú³É»ã×Ü´ó±í/ͬÃûÆóÒµ_1-8ÔÂÀۼƶԱÈ_2026-09-19.sql
@@ -16,10 +16,11 @@
--   2025 å¹´ 1-8 æœˆæœ‰ 664 å®¶ä¼ä¸šã€2026 å¹´ 1-8 æœˆåªæœ‰ 636 å®¶ï¼Œ
--   ç›´æŽ¥æ‹¿ä¸¤å¹´æ€»æ•°ç›¸å‡ï¼Œå·®é¢é‡Œæ··ç€ã€Œä¼ä¸šæ•°é‡å˜äº†ã€çš„影响,不是真实增减。
--   æŠŠä¸¤å¹´éƒ½æŠ¥é€è¿‡çš„企业名称取交集(实测 545 å®¶ï¼‰ï¼Œä¸¤å¹´çš„企业范围才一致。
-- å®žæµ‹ç»“果(同名企业口径 545 å®¶ï¼‰ï¼š
--   2025 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 30153.14 ä¸‡å¨ï¼Œå‘¨è½¬é‡ 4635340.46 ä¸‡å¨å…¬é‡Œ
--   2026 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 27752.68 ä¸‡å¨ï¼Œå‘¨è½¬é‡ 4389882.05 ä¸‡å¨å…¬é‡Œ
--   åŒæ¯”:货运量 -7.96%,周转量 -5.30%
-- å®žæµ‹ç»“果(同名企业口径 545 å®¶ï¼Œ4 ä½å°æ•°ï¼‰ï¼š
--   2025 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 30153.1392 ä¸‡å¨ï¼Œå‘¨è½¬é‡ 4635340.4627 ä¸‡å¨å…¬é‡Œ
--   2026 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 27752.6820 ä¸‡å¨ï¼Œå‘¨è½¬é‡ 4389882.0468 ä¸‡å¨å…¬é‡Œ
--   åŒæ¯”:货运量 -7.9609%,周转量 -5.2954%
--   ï¼ˆ2026 å¹´è¿™ä¸¤ä¸ªæ•°ä¸Žã€ŠæŒç»­åœ¨è§„企业545å®¶_分市州1-8月累计运距及同比》交付件的全省行完全一致)
-- ============================================================
@@ -38,7 +39,8 @@
--    Â· æ˜Žç»†ç±»æŸ¥è¯¢ï¼ˆæŸ¥è¯¢ 2、查询 7)→ å®Œå…¨ä¸å¥— ROUND,导出即原始值
--      ï¼ˆè´§è¿é‡/周转量的原始值最多 4 ä½å°æ•°ï¼Œå°±æ˜¯å…¨ç²¾åº¦ï¼›åŒæ¯”列小数位较长,
--        å«Œé•¿å¯è‡ªè¡Œåœ¨å¤–面套 ROUND(...,2));
--    Â· æ±‡æ€»å±•示类(查询 1、3、5、8)→ ä¿ç•™ 2 ä½å°æ•°ï¼ˆç»™äººçœ‹çš„,够用且好看);
--    Â· æ±‡æ€»ç±»ï¼ˆæŸ¥è¯¢ 1、3、5、8)→ åŒæ ·ä¿ç•™ 4 ä½å°æ•°ï¼ˆå¯¹æœ¬è¡¨æ•°æ®æ¥è¯´ 4 ä½å°±æ˜¯å…¨ç²¾åº¦ï¼Œ
--      ä¿ç•™ 2 ä½æ²¡æœ‰ä»»ä½•好处,反而会让人误以为数据就只有 2 ä½ç²¾åº¦ï¼‰ï¼›
--    Â· å¦‚果你要自己算运距/同比,建议直接用查询 7,或把 /10000 é‚£ä¸€å±‚去掉,
--      å…ˆåœ¨ Excel é‡ŒæŒ‰ã€Œå¨ã€ç®—完再除。
-- ============================================================
@@ -48,16 +50,16 @@
-- =====================================================================
SELECT COUNT(DISTINCT e.enterprise_name)                                   AS ä¼ä¸šæ•°,
       ROUND(SUM(CASE WHEN e.report_period <= '2025-08'
                      THEN e.freight_total  ELSE 0 END) / 10000, 2)        AS è´§è¿é‡2025_万吨,
                      THEN e.freight_total  ELSE 0 END) / 10000, 4)        AS è´§è¿é‡2025_万吨,
       ROUND(SUM(CASE WHEN e.report_period >= '2026-01'
                      THEN e.freight_total  ELSE 0 END) / 10000, 2)        AS è´§è¿é‡2026_万吨,
                      THEN e.freight_total  ELSE 0 END) / 10000, 4)        AS è´§è¿é‡2026_万吨,
       ROUND((SUM(CASE WHEN e.report_period >= '2026-01' THEN e.freight_total ELSE 0 END)
            / NULLIF(SUM(CASE WHEN e.report_period <= '2025-08' THEN e.freight_total ELSE 0 END), 0) - 1) * 100, 2)
                                                                           AS è´§è¿é‡åŒæ¯”_百分比,
       ROUND(SUM(CASE WHEN e.report_period <= '2025-08'
                      THEN e.turnover_total ELSE 0 END) / 10000, 2)        AS å‘¨è½¬é‡2025_万吨公里,
                      THEN e.turnover_total ELSE 0 END) / 10000, 4)        AS å‘¨è½¬é‡2025_万吨公里,
       ROUND(SUM(CASE WHEN e.report_period >= '2026-01'
                      THEN e.turnover_total ELSE 0 END) / 10000, 2)        AS å‘¨è½¬é‡2026_万吨公里,
                      THEN e.turnover_total ELSE 0 END) / 10000, 4)        AS å‘¨è½¬é‡2026_万吨公里,
       ROUND((SUM(CASE WHEN e.report_period >= '2026-01' THEN e.turnover_total ELSE 0 END)
            / NULLIF(SUM(CASE WHEN e.report_period <= '2025-08' THEN e.turnover_total ELSE 0 END), 0) - 1) * 100, 2)
                                                                           AS å‘¨è½¬é‡åŒæ¯”_百分比
@@ -109,8 +111,8 @@
-- =====================================================================
SELECT t.scope_type                            AS å£å¾„,
       COUNT(DISTINCT t.enterprise_name)       AS ä¼ä¸šæ•°,
       ROUND(SUM(t.freight_total)  / 10000, 2) AS è´§è¿é‡_万吨,
       ROUND(SUM(t.turnover_total) / 10000, 2) AS å‘¨è½¬é‡_万吨公里
       ROUND(SUM(t.freight_total)  / 10000, 4) AS è´§è¿é‡_万吨,
       ROUND(SUM(t.turnover_total) / 10000, 4) AS å‘¨è½¬é‡_万吨公里
FROM (
  SELECT 'ALL_2025' AS scope_type, enterprise_name, freight_total, turnover_total
    FROM h2032_enterprise_monthly WHERE report_period BETWEEN '2025-01' AND '2025-08'
@@ -180,10 +182,10 @@
         WHEN region_code LIKE '429005%' THEN '潜江' WHEN region_code LIKE '429006%' THEN '天门'
         WHEN region_code LIKE '429021%' THEN '林区' ELSE '其他' END           AS å¸‚å·ž,
       COUNT(DISTINCT d.enterprise_name)                                       AS åŒåä¼ä¸šæ•°,
       ROUND(SUM(d.freight_2025) / 10000, 2)                                   AS è´§è¿é‡2025_万吨,
       ROUND(SUM(d.freight_2026) / 10000, 2)                                   AS è´§è¿é‡2026_万吨,
       ROUND(SUM(d.turnover_2025) / 10000, 2)                                  AS å‘¨è½¬é‡2025_万吨公里,
       ROUND(SUM(d.turnover_2026) / 10000, 2)                                  AS å‘¨è½¬é‡2026_万吨公里
       ROUND(SUM(d.freight_2025) / 10000, 4)                                   AS è´§è¿é‡2025_万吨,
       ROUND(SUM(d.freight_2026) / 10000, 4)                                   AS è´§è¿é‡2026_万吨,
       ROUND(SUM(d.turnover_2025) / 10000, 4)                                  AS å‘¨è½¬é‡2025_万吨公里,
       ROUND(SUM(d.turnover_2026) / 10000, 4)                                  AS å‘¨è½¬é‡2026_万吨公里
FROM (
  SELECT e.enterprise_name,
         MAX(CASE WHEN e.report_period >= '2026-01' THEN e.region_code END)    AS region_code,
@@ -276,14 +278,14 @@
-- =====================================================================
-- æŸ¥è¯¢ 8:查询 7 çš„合计行(导出明细后用来对总数,546 å®¶å£å¾„)
--   2025 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 30162.99 ä¸‡å¨ã€å‘¨è½¬é‡ 4637038.58 ä¸‡å¨å…¬é‡Œ
--   2026 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 27764.88 ä¸‡å¨ã€å‘¨è½¬é‡ 4392984.81 ä¸‡å¨å…¬é‡Œ
--   2025 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 30162.9872 ä¸‡å¨ã€å‘¨è½¬é‡ 4637038.5803 ä¸‡å¨å…¬é‡Œ
--   2026 å¹´ 1-8 æœˆï¼šè´§è¿é‡ 27764.8812 ä¸‡å¨ã€å‘¨è½¬é‡ 4392984.8116 ä¸‡å¨å…¬é‡Œ
-- =====================================================================
SELECT COUNT(DISTINCT e.unified_credit_code)                              AS ä¼ä¸šæ•°,
       ROUND(SUM(CASE WHEN e.report_period <= '2025-08' THEN e.freight_total  ELSE 0 END) / 10000, 2) AS è´§è¿é‡2025_万吨,
       ROUND(SUM(CASE WHEN e.report_period >= '2026-01' THEN e.freight_total  ELSE 0 END) / 10000, 2) AS è´§è¿é‡2026_万吨,
       ROUND(SUM(CASE WHEN e.report_period <= '2025-08' THEN e.turnover_total ELSE 0 END) / 10000, 2) AS å‘¨è½¬é‡2025_万吨公里,
       ROUND(SUM(CASE WHEN e.report_period >= '2026-01' THEN e.turnover_total ELSE 0 END) / 10000, 2) AS å‘¨è½¬é‡2026_万吨公里
       ROUND(SUM(CASE WHEN e.report_period <= '2025-08' THEN e.freight_total  ELSE 0 END) / 10000, 4) AS è´§è¿é‡2025_万吨,
       ROUND(SUM(CASE WHEN e.report_period >= '2026-01' THEN e.freight_total  ELSE 0 END) / 10000, 4) AS è´§è¿é‡2026_万吨,
       ROUND(SUM(CASE WHEN e.report_period <= '2025-08' THEN e.turnover_total ELSE 0 END) / 10000, 4) AS å‘¨è½¬é‡2025_万吨公里,
       ROUND(SUM(CASE WHEN e.report_period >= '2026-01' THEN e.turnover_total ELSE 0 END) / 10000, 4) AS å‘¨è½¬é‡2026_万吨公里
FROM h2032_enterprise_monthly e
JOIN (SELECT DISTINCT unified_credit_code c FROM h2032_enterprise_monthly
       WHERE report_period BETWEEN '2025-01' AND '2025-08') a ON a.c = e.unified_credit_code