docs(货运): 新增同名企业(545家)1-8月累计货运量/周转量SQL查询脚本 + 09-19功能测试报告与工作日结

- 同名企业口径:两年1-8月企业名称交集545家,含汇总/明细/口径对照/差异名单/分市州/体检共6条查询
- 2025年1-8月:货运量30153.14万吨、周转量4635340.46万吨公里
- 2026年1-8月:货运量27752.68万吨、周转量4389882.05万吨公里
- 明细545行求和=汇总行,差异企业家数与金额闭合校验通过
5个文件已添加
578 ■■■■■ 已修改文件
docs/功能测试报告/功能测试报告_同名企业1-8月累计货运量与周转量SQL_2026-09-19.md 74 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/功能测试报告/功能测试报告_持续在规企业545家分市州累计运距同比_2026-09-19.md 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/工作日结/工作日结_2026-09-19.md 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/工具/持续在规企业545家累计运距生成.py 174 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/生成汇总大表/同名企业_1-8月累计对比_2026-09-19.sql 201 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_ͬÃûÆóÒµ1-8ÔÂÀۼƻõÔËÁ¿ÓëÖÜתÁ¿SQL_2026-09-19.md
New file
@@ -0,0 +1,74 @@
# åŠŸèƒ½æµ‹è¯•æŠ¥å‘Š_同名企业1-8月累计货运量与周转量SQL_2026-09-19
## ä¸€ã€åŠŸèƒ½è¯´æ˜Ž
2025 å¹´ 1-8 æœˆä¸Ž 2026 å¹´ 1-8 æœˆæŠ¥é€çš„企业数量不同(664 å®¶ vs 636 å®¶ï¼‰ï¼Œ
直接相减的差额里混着「企业名单变了」的影响。本功能按**同名企业口径**
(两年 1-8 æœˆéƒ½æŠ¥é€è¿‡çš„企业名称交集,共 **545 å®¶**)分别汇总两年 1-8 æœˆç´¯è®¡çš„
**货运量**与**货物周转量**,保证两年企业范围完全一致,可直接用于同比。
- äº¤ä»˜è„šæœ¬ï¼š`docs/生成汇总大表/同名企业_1-8月累计对比_2026-09-19.sql`(含 6 æ¡æŸ¥è¯¢ï¼‰
- æ•°æ®æºè¡¨ï¼š`traffic_audit.h2032_enterprise_monthly`(交企统H203-2表,企业级月报)
- å…³é”®å­—段:`freight_total` è´§è¿é‡ï¼ˆå¨ï¼‰ã€`turnover_total` è´§ç‰©å‘¨è½¬é‡ï¼ˆå¨å…¬é‡Œï¼‰ã€
  `report_period` æŠ¥è¡¨æœŸï¼ˆ'YYYY-MM')、`enterprise_name` ä¼ä¸šåç§°
- å•位换算:表内为「吨 / å¨å…¬é‡Œã€ï¼Œè¾“出统一 Ã·10000 â†’ ã€Œä¸‡å¨ / ä¸‡å¨å…¬é‡Œã€
- æœŸé—´å–法:1-8 æœˆ = `report_period BETWEEN 'YYYY-01' AND 'YYYY-08'`
- è„šæœ¬å†…å®¹ï¼šæŸ¥è¯¢ 1 æ±‡æ€»è¡Œ / æŸ¥è¯¢ 2 é€ä¼ä¸šå¯¹ç…§ / æŸ¥è¯¢ 3 å£å¾„对照 /
  æŸ¥è¯¢ 4 å·®å¼‚企业名单 / æŸ¥è¯¢ 5 åˆ†å¸‚州汇总 / æŸ¥è¯¢ 6 æ•°æ®ä½“检
## äºŒã€æµ‹è¯•环境
- æ•°æ®åº“:MySQL 8.0.29,`127.0.0.1:3308`,库 `traffic_audit`
- å®¢æˆ·ç«¯ï¼šmysql 5.7.41,参数 `--default-character-set=utf8mb4`
- æ‰§è¡Œæ–¹å¼ï¼šæ•´è„šæœ¬ä¸€æ¬¡æ€§æ‰§è¡Œ `mysql ... < åŒåä¼ä¸š_1-8月累计对比_2026-09-19.sql`
- æ•°æ®è§„模:`report_period` å…± 20 ä¸ªæŠ¥è¡¨æœŸï¼ˆ2025-01 ~ 2026-08),合计 13056 è¡Œï¼›
  å…¶ä¸­ 1-8 æœˆå£å¾„ 10400 è¡Œï¼ˆ2025 å¹´ 5312 è¡Œ / 2026 å¹´ 5088 è¡Œï¼‰
- æµ‹è¯•日期:2026-09-19
## ä¸‰ã€ç”¨ä¾‹è¡¨
| ç¼–号 | ç±»åž‹ | ç”¨ä¾‹ | è¾“å…¥ | é¢„期 | å®žé™… | ç»“论 |
| --- | --- | --- | --- | --- | --- | --- |
| T1 | æ­£å‘ | åŒåä¼ä¸šå£å¾„汇总(查询 1) | ä¸¤å¹´ 1-8 æœˆéƒ½æŠ¥é€è¿‡çš„企业 | ä¸€è¡Œå†…出两年累计数 | 545 å®¶ï¼›è´§è¿é‡ 30153.14 / 27752.68 ä¸‡å¨ï¼Œå‘¨è½¬é‡ 4635340.46 / 4389882.05 ä¸‡å¨å…¬é‡Œ | é€šè¿‡ |
| T2 | æ­£å‘ | é€ä¼ä¸šå¯¹ç…§æ˜Žç»†ï¼ˆæŸ¥è¯¢ 2) | åŒä¸Š | æ¯å®¶ä¸€è¡Œã€ä¸¤å¹´å¹¶æŽ’ | 545 è¡Œï¼Œå«ä¸¤å¹´å€¼ã€å¢žå‡é¢ã€åŒæ¯” | é€šè¿‡ |
| T3 | æ­£å‘ | æ˜Žç»†æ±‚å’Œ = æ±‡æ€»è¡Œ | æŸ¥è¯¢ 2 çš„ 545 è¡ŒæŒ‰åˆ—求和 | ä¸ŽæŸ¥è¯¢ 1 å®Œå…¨ä¸€è‡´ | 30153.14 / 4635340.46 / 27752.68 / 4389882.05,差异 0 | é€šè¿‡ |
| T4 | æ­£å‘ | å£å¾„对照(查询 3) | å…¨é‡ vs åŒå | 4 è¡Œå£å¾„可解释差额 | å…¨é‡ 2025:664 å®¶ 33994.45 ä¸‡å¨ / 5102518.95 ä¸‡å¨å…¬é‡Œï¼›å…¨é‡ 2026:636 å®¶ 31399.82 ä¸‡å¨ / 4927161.77 ä¸‡å¨å…¬é‡Œ | é€šè¿‡ |
| T5 | æ­£å‘ | å·®å¼‚企业名单(查询 4) | åªåœ¨ä¸€å¹´æŠ¥é€çš„企业 | å®¶æ•°ä¸Žå·®é¢ç›¸ç¬¦ | 2025 ç‹¬æœ‰ 119 å®¶ã€2026 ç‹¬æœ‰ 91 å®¶ï¼›å®¶æ•°æ ¡éªŒ 664−545=119、636−545=91 | é€šè¿‡ |
| T6 | æ­£å‘ | å·®å¼‚金额闭合 | åŒå + ç‹¬æœ‰ = å…¨é‡ | é‡‘额闭合 | è´§è¿é‡ 30153.14+3841.31=33994.45(=全量 2025);周转量 4635340.46+467178.48=5102518.94(全量 5102518.95,差 0.01 ä¸ºå››èˆäº”入) | é€šè¿‡ |
| T7 | æ­£å‘ | åˆ†å¸‚州汇总(查询 5) | åŒåä¼ä¸šæŒ‰ region_code å½’市州 | å¸‚州合计 = å…¨çœ | 16 ä¸ªå¸‚州(仙桃 0 å®¶åŒåä¼ä¸šï¼‰ï¼Œä¼ä¸šæ•°åˆè®¡ 545,各列合计 = æŸ¥è¯¢ 1 | é€šè¿‡ |
| T8 | æ­£å‘ | å…¥åº“抽查:逐月相加对齐 | æ­¦æ±‰é’¢é“é›†å›¢ç‰©æµæœ‰é™å…¬å¸ 2025-01~08 å…± 8 æ¡åŽŸå§‹è®°å½• | é€æœˆç›¸åŠ  = æ˜Žç»†è¡Œ | è´§è¿é‡ 7381512 å¨ â†’ 738.15 ä¸‡å¨ï¼›å‘¨è½¬é‡ 231191873 å¨å…¬é‡Œ â†’ 23119.19 ä¸‡å¨å…¬é‡Œï¼Œä¸ŽæŸ¥è¯¢ 2 è¾“出一致 | é€šè¿‡ |
| T9 | è´Ÿå‘ | ä¼ä¸šåä¸å­˜åœ¨ | `enterprise_name='不存在的企业XYZ'` | 0 è¡Œã€ä¸æŠ¥é”™ | 0 è¡Œ | é€šè¿‡ |
| T10 | è´Ÿå‘ | å¹´ä»½å†™é”™ | æœŸé—´ `'2024-01' ~ '2024-08'` | 0 è¡Œ | 0 è¡Œ | é€šè¿‡ |
| T11 | è¾¹ç•Œ | åŒä¸€ä¼ä¸šåŒæœˆé‡å¤è®°å½• | `GROUP BY enterprise_name, report_period HAVING COUNT(*)>1` | æ— é‡å¤ï¼ˆå¦åˆ™ç´¯è®¡ä¼šè¢«æ”¾å¤§ï¼‰ | 0 æ¡ | é€šè¿‡ |
| T12 | è¾¹ç•Œ | åŒåä¼ä¸šæœˆä»½ä¸å…¨ï¼ˆæŸ¥è¯¢ 6) | è®°å½•æ•° <> 8 çš„同名企业 | æ— å¼‚常 | ç©ºç»“果集,545 å®¶ä¸¤å¹´å„ 8 ä¸ªæœˆé½å…¨ | é€šè¿‡ |
## å››ã€å‘现的问题与处置
1. **企业名称作为匹配键的固有风险(已提示,未改口径)**
   åŒåå£å¾„按 `enterprise_name` å­—符串相等匹配,若企业改名、或不同地市出现完全同名的企业,
   ä¼šè¢«åˆ¤ä¸ºã€Œä¸åŒä¼ä¸šã€æˆ–「同一企业」。实测两年数据中同一报表期内无重名记录(T11),
   ä½†è·¨å¹´æ”¹åæ— æ³•通过本脚本识别;如需更严谨可改用 `unified_credit_code`(统一社会信用代码)匹配。
2. **同名口径与全量口径的差额已可解释**
   2026 å¹´å…¨é‡æ¯”同名口径多 3647.14 ä¸‡å¨ã€å°‘ 537279.73 ä¸‡å¨å…¬é‡Œï¼ˆæ–°è¿› 91 å®¶ä¼ä¸šï¼‰ï¼Œ
   2025 å¹´å…¨é‡æ¯”同名口径多 3841.31 ä¸‡å¨ã€467178.48 ä¸‡å¨å…¬é‡Œï¼ˆé€€å‡º 119 å®¶ï¼‰ã€‚
   å¯¹å¤–说明同比时需注明采用的口径,避免与全量口径数字对不上。
3. **汇总行的同比小数位**
   å‘¨è½¬é‡åŒæ¯”精确值 âˆ’5.2954%,`ROUND(...,2)` è¾“出 âˆ’5.30(显示为 âˆ’5.3),
   è„šæœ¬è¡¨å¤´æ³¨é‡Šå·²åŒæ­¥ä¿®æ­£ä¸º âˆ’5.30%,避免与展示值不一致。
4. **`region_code` å– 2026 å¹´è®°å½•**
   åˆ†å¸‚州查询用 `MAX(CASE WHEN report_period >= '2026-01' ...)` å– 2026 å¹´çš„地区代码,
   ä¼ä¸šè·¨å¸‚迁移时按 2026 å¹´å½’属统计,实测未发现影响(同名企业两地并存的情况无)。
## äº”、结论
6 æ¡æŸ¥è¯¢æ•´è„šæœ¬æ‰§è¡Œé€šè¿‡ï¼Œ12 æ¡ç”¨ä¾‹ï¼ˆ8 æ­£å‘ / 2 è´Ÿå‘ / 2 è¾¹ç•Œï¼‰å…¨éƒ¨é€šè¿‡ã€‚
**同名企业口径(545 å®¶ï¼‰1-8 æœˆç´¯è®¡ç»“果:**
| æŒ‡æ ‡ | 2025 å¹´ 1-8 æœˆ | 2026 å¹´ 1-8 æœˆ | åŒæ¯” |
| --- | --- | --- | --- |
| è´§è¿é‡ï¼ˆä¸‡å¨ï¼‰ | 30153.14 | 27752.68 | âˆ’7.96% |
| è´§ç‰©å‘¨è½¬é‡ï¼ˆä¸‡å¨å…¬é‡Œï¼‰ | 4635340.46 | 4389882.05 | âˆ’5.30% |
其中 2026 å¹´ç´¯è®¡æ•°ä¸Ž 2026-09-19《持续在规企业 545 å®¶ç´¯è®¡è¿è·ã€‹äº¤ä»˜ä»¶çš„全省行
(27752.6820 ä¸‡å¨ / 4389882.0468 ä¸‡å¨å…¬é‡Œï¼‰å®Œå…¨ä¸€è‡´ï¼Œä¸¤æ¡é“¾è·¯å£å¾„互证通过。
docs/¹¦ÄܲâÊÔ±¨¸æ/¹¦ÄܲâÊÔ±¨¸æ_³ÖÐøÔÚ¹æÆóÒµ545¼Ò·ÖÊÐÖÝÀÛ¼ÆÔ˾àͬ±È_2026-09-19.md
New file
@@ -0,0 +1,52 @@
# åŠŸèƒ½æµ‹è¯•æŠ¥å‘Š_持续在规企业545家分市州累计运距同比_2026-09-19
## ä¸€ã€åŠŸèƒ½è¯´æ˜Ž
- **需求**:按用户确认的「持续在规企业 = 2025 å¹´ 1-8 æœˆä¸Ž 2026 å¹´ 1-8 æœˆå‡è¿žç»­ 8 ä¸ªæœˆä¸ŠæŠ¥ã€å£å¾„(545 å®¶ï¼‰ï¼Œ
  ç®—出分市州 1-8 æœˆç´¯è®¡å¹³å‡è¿è·åŒæ¯”,输出到 `D:\桌面\货运企业分市州情况\`。
- **口径**:
  - æŒç»­åœ¨è§„企业(545 å®¶ï¼‰ï¼ä¸¤å¹´å‡è¿žç»­ 8 ä¸ªæœˆä¸ŠæŠ¥ H203-2 æœˆæŠ¥çš„企业;两年间新进、退出的企业不参与同比;
  - ç´¯è®¡å¹³å‡è¿è·ï¼ˆå…¬é‡Œï¼‰ï¼ 1-8 æœˆç´¯è®¡è´§ç‰©å‘¨è½¬é‡ Ã· 1-8 æœˆç´¯è®¡è´§è¿é‡ï¼ˆåŠ æƒå¹³å‡ï¼‰ï¼›
  - åŒæ¯” ï¼ 2026 å¹´ 1-8 æœˆç´¯è®¡å¹³å‡è¿è· Ã· 2025 å¹´ 1-8 æœˆç´¯è®¡å¹³å‡è¿è· âˆ’ 1;
  - å…¨çœè¡Œ ï¼ 17 ä¸ªå¸‚州的累计周转量、累计货运量分别求和后相除(非市州同比的算术平均)。
- **产出**:`D:\桌面\货运企业分市州情况\持续在规企业545å®¶_分市州1-8月累计运距及同比_2026-09-19.xlsx`
  ï¼ˆé¡µç­¾ï¼š`市州汇总`〔全省 + 17 å¸‚州〕、`企业明细(545å®¶)`)。
- **生成脚本**:`docs\工具\持续在规企业545家累计运距生成.py`。
## äºŒã€æµ‹è¯•环境
| é¡¹ | å†…容 |
| --- | --- |
| æ•°æ®åº“ | MySQL 127.0.0.1:3308 / traffic_audit,表 `h2032_enterprise_monthly` |
| è¿è¡ŒçŽ¯å¢ƒ | Python 3.14.2 + openpyxl 3.1.5 |
| å¯¹ç…§ç‰© | ç”¨æˆ·ä¾§ `D:\桌面\货运企业分市州情况\货运企业分市州情况xlsx.xlsx`(M/N ä¸¤åˆ—) |
| è¾“出位置 | å·¥ä½œåŒº `outputs\` ä¸Ž `D:\桌面\货运企业分市州情况\`,两份 SHA256 ä¸€è‡´ |
## ä¸‰ã€ç”¨ä¾‹è¡¨
| ç¼–号 | ç±»åž‹ | è¾“å…¥ | é¢„期 | å®žé™… | ç»“论 |
| --- | --- | --- | --- | --- | --- |
| TC01 | æ­£å‘ | å…¨çœ 545 å®¶ 2026 å¹´ 1-8 æœˆç´¯è®¡å‘¨è½¬é‡ Ã· ç´¯è®¡è´§è¿é‡ | 158.1787 å…¬é‡Œ | 4389882.0468 Ã· 27752.6820 = 158.1787 | é€šè¿‡ |
| TC02 | æ­£å‘ | å…¨çœ 545 å®¶ 2025 å¹´ 1-8 æœˆç´¯è®¡å¹³å‡è¿è· | ä¸Žç”¨æˆ·æ–‡ä»¶ M4 ä¸€è‡´ | 153.7266,一致 | é€šè¿‡ |
| TC03 | æ­£å‘ | å…¨çœç´¯è®¡è¿è·åŒæ¯” | 158.1787 Ã· 153.7266 âˆ’ 1 | +2.8961% | é€šè¿‡ |
| TC04 | æ­£å‘ | 17 ä¸ªå¸‚å·ž 2025 å¹´ç´¯è®¡å¹³å‡è¿è·ï¼ˆåŽ»å¹´åŒæœŸåŸºæ•°ï¼‰ | ä¸Žç”¨æˆ·æ–‡ä»¶ M åˆ—逐行一致 | 17/17 ä¸€è‡´ | é€šè¿‡ |
| TC05 | æ­£å‘ | 17 ä¸ªå¸‚州累计运距同比 | ä¸Žç”¨æˆ·æ–‡ä»¶ N åˆ—逐行一致 | 17/17 ä¸€è‡´ï¼ˆå…¨çœè¡Œé™¤å¤–,见 TC10) | é€šè¿‡ |
| TC06 | æ­£å‘ | æ˜Žç»†é¡µ 545 è¡Œæ±‚å’Œ = æ±‡æ€»é¡µå…¨çœè¡Œ | å·®å¼‚ 0 | è´§è¿é‡ 27752.6820、周转量 4389882.0468,差异 0 | é€šè¿‡ |
| TC07 | æ­£å‘ | å…¨çœè¡Œ = Î£17 å¸‚å·ž | é€é¡¹ç›¸ç­‰ | ç›¸ç­‰ï¼ˆå…ˆæ±‚累计周转量、累计货运量再相除) | é€šè¿‡ |
| TC08 | è¾¹ç•Œ | ä»™æ¡ƒå¸‚ 2026 å¹´ 2 å®¶æŒç»­åœ¨è§„企业无 2025 å¹´è¿žç»­ä¸ŠæŠ¥è®°å½• | åŒæ¯”留空并注明不适用,不除零报错 | ä¼ä¸šæ•° 0、运距与同比留空,备注「同比不适用」 | é€šè¿‡ |
| TC09 | è¾¹ç•Œ | ç´¯è®¡è´§è¿é‡ä¸º 0 çš„企业 | ç´¯è®¡è¿è·ç•™ç©ºï¼Œä¸é™¤é›¶æŠ¥é”™ | å·²éªŒè¯ï¼ˆè¡¨å†…无此类企业) | é€šè¿‡ |
| TC10 | è´Ÿå‘ | ç”¨æˆ·æ–‡ä»¶å…¨çœè¡ŒåŒæ¯” +7.8217% | åº”与市州行同为 1-8 æœˆç´¯è®¡å£å¾„ | è¯¥å€¼å®žä¸º 545 å®¶ **8 æœˆå½“月**同比(157.0007 Ã· 145.6114 âˆ’ 1 = +7.8217%);累计口径应为 +2.8961%,两者相差 4.93 ä¸ªç™¾åˆ†ç‚¹ | é€šè¿‡ï¼ˆé—®é¢˜å·²åœ¨äº¤ä»˜ä»¶ä¸­ä¿®æ­£ï¼Œå¹¶åœ¨è¡¨å†…注明口径) |
| TC11 | è¾¹ç•Œ | æ­¦æ±‰çŸ³åŒ–交通运输有限公司、湖北捷龙交通运业有限公司 2026 å¹´ 1 æœˆåœ°åŒºç ä¸º 420100、其后为 420107/420103 | åŒå±žæ­¦æ±‰å¸‚,归集不影响 | å‡è®¡å…¥æ­¦æ±‰ | é€šè¿‡ |
## å››ã€å‘现的问题与处置
1. **用户文件全省行同比口径混用(已给出正确值)**:`货运企业分市州情况xlsx.xlsx` çš„ N4 å•元格填的是 545 å®¶ **8 æœˆå½“月**运距同比
   ï¼ˆ+7.8217%),而其下 17 ä¸ªå¸‚州行都是 **1-8 æœˆç´¯è®¡**同比。本表按累计口径给出全省 **+2.8961%**。
2. **M åˆ—未标年份**:该列表格值实为 2025 å¹´ï¼ˆåŽ»å¹´åŒæœŸï¼‰ç´¯è®¡å¹³å‡è¿è·ï¼Œè¡¨å¤´ã€Œ1-8月平均运距」易误读为今年;
   æœ¬è¡¨å°† 2025、2026 ä¸¤å¹´åˆ†åˆ—,消除歧义。
3. **仙桃市无可比基数**:2026 å¹´æŒç»­åœ¨è§„çš„ 2 å®¶ä¼ä¸š 2025 å¹´æ— è¿žç»­ä¸ŠæŠ¥è®°å½•,同比不适用(不是缺数),已在表内注明。
## äº”、结论
11 æ¡ç”¨ä¾‹ï¼ˆ7 æ­£å‘ / 3 è¾¹ç•Œ / 1 è´Ÿå‘)全部通过;17 ä¸ªå¸‚州与用户现有表格逐行一致,全省行更正为累计口径 +2.90%,
明细 545 è¡Œä¸Žæ±‡æ€»é€é¡¹å¯¹è´¦ 0 å·®å¼‚。交付件已生成到 `D:\桌面\货运企业分市州情况\`。
docs/¹¤×÷ÈÕ½á/¹¤×÷ÈÕ½á_2026-09-19.md
New file
@@ -0,0 +1,77 @@
# å·¥ä½œæ—¥ç»“_2026-09-19
## ä¸€ã€ä»Šå¤©åšäº†ä»€ä¹ˆ
### 1. æŒç»­åœ¨è§„企业(545 å®¶ï¼‰åˆ†å¸‚å·ž 1-8 æœˆç´¯è®¡è¿è·åŒæ¯”(桌面交付)
用户 09-18 ç¡®è®¤ã€ŒæŒç»­åœ¨è§„企业」= **2025 å¹´ 1-8 æœˆä¸Ž 2026 å¹´ 1-8 æœˆå‡è¿žç»­ 8 ä¸ªæœˆä¸ŠæŠ¥**(545 å®¶ï¼‰ï¼Œ
要求把该口径下的分市州累计运距同比算出来并输出到 `D:\桌面\货运企业分市州情况\`。
- æ•°æ®æºï¼š`traffic_audit.h2032_enterprise_monthly`(2025-01 ~ 2026-08)。
- å£å¾„:累计平均运距 = 1-8 æœˆç´¯è®¡å‘¨è½¬é‡ Ã· ç´¯è®¡è´§è¿é‡ï¼›åŒæ¯” = ä»Šå¹´ç´¯è®¡ Ã· åŽ»å¹´åŒæœŸç´¯è®¡ âˆ’ 1;全省 = Î£17 å¸‚州。
- äº§å‡ºï¼š`持续在规企业545å®¶_分市州1-8月累计运距及同比_2026-09-19.xlsx`(`市州汇总` + `企业明细(545å®¶)`),
  è„šæœ¬ `docs\工具\持续在规企业545家累计运距生成.py`。
关键结果:
| å¸‚å·ž | 2026å¹´1-8月累计运距(公里) | 2025年同期(公里) | åŒæ¯” | å¸‚å·ž | 2026å¹´1-8月累计运距(公里) | 2025年同期(公里) | åŒæ¯” |
| --- | --- | --- | --- | --- | --- | --- | --- |
| **全省** | **158.18** | **153.73** | **+2.90%** | é»„冈 | 138.73 | 137.16 | +1.15% |
| æ­¦æ±‰ | 159.66 | 140.71 | +13.47% | å’¸å® | 115.25 | 151.84 | âˆ’24.10% |
| é»„石 | 112.67 | 93.75 | +20.18% | éšå·ž | 187.28 | 226.03 | âˆ’17.14% |
| åå ° | 321.13 | 330.78 | âˆ’2.92% | æ©æ–½å·ž | 141.78 | 128.56 | +10.28% |
| å®œæ˜Œ | 85.75 | 83.61 | +2.57% | ä»™æ¡ƒ | â€” | â€” | ä¸é€‚用 |
| è¥„阳 | 279.65 | 258.01 | +8.39% | æ½œæ±Ÿ | 407.97 | 367.73 | +10.94% |
| é„‚å·ž | 42.38 | 103.49 | âˆ’59.05% | å¤©é—¨ | 61.02 | 134.33 | âˆ’54.57% |
| è†é—¨ | 305.92 | 321.00 | âˆ’4.70% | ç¥žå†œæž¶æž—区 | 57.68 | 113.39 | âˆ’49.13% |
| å­æ„Ÿ | 183.86 | 198.51 | âˆ’7.38% | | | | |
| è†å·ž | 321.44 | 337.36 | âˆ’4.72% | | | | |
### 2. æ ¸å¯¹ç”¨æˆ·ä¾§ã€Šè´§è¿ä¼ä¸šåˆ†å¸‚州情况》表
- è¯¥è¡¨ M/N ä¸¤åˆ—(持续在规企业)与本次 545 å®¶å£å¾„**逐行一致**(M = åŽ»å¹´åŒæœŸåŸºæ•°ï¼ŒN = ç´¯è®¡åŒæ¯”)。
- å‘现一处口径混用:**全省行 N4 å¡«çš„æ˜¯ 8 æœˆå½“月同比 +7.8217%**(157.0007 Ã· 145.6114 âˆ’ 1),
  å…¶ä½™ 17 è¡Œå‡ä¸º 1-8 æœˆç´¯è®¡åŒæ¯”;累计口径应为 **+2.90%**(158.18 Ã· 153.73 âˆ’ 1),相差 4.93 ä¸ªç™¾åˆ†ç‚¹ã€‚
- è¡¨å¤´ã€Œ1-8月平均运距」未标年份,实际为 2025 å¹´å€¼ï¼Œå·²åœ¨æœ¬æ¬¡äº¤ä»˜ä»¶ä¸­åˆ†åˆ—两年消除歧义。
- è¯¥è¡¨ O åˆ—「1-8月高速运距同比」与手头高速数据(`运距分析报告\运距分析数据汇总.xlsx`)算得的全省 âˆ’5.94% ä¸ä¸€è‡´
  ï¼ˆå¸‚州差异更大),来源与期间待用户确认;按用户要求本轮不处理高速列。
### 3. åŒåä¼ä¸šå£å¾„ 1-8 æœˆç´¯è®¡è´§è¿é‡/周转量 SQL æŸ¥è¯¢è„šæœ¬ï¼ˆæœ¬æ¬¡æ–°å¢žï¼‰
用户提问:25 å¹´ä¸Ž 26 å¹´ä¼ä¸šæ•°ä¸åŒï¼Œè¦ã€Œä¼ä¸šåç§°ç›¸åŒã€åœ°åˆ†åˆ«æ±‡æ€» 1-8 æœˆç´¯è®¡çš„
货物周转量和货运量,SQL æ€Žä¹ˆå†™ã€‚
- äº¤ä»˜è„šæœ¬ï¼š`docs\生成汇总大表\同名企业_1-8月累计对比_2026-09-19.sql`(6 æ¡æŸ¥è¯¢ï¼Œå…¨ä¸­æ–‡æ³¨é‡Šï¼‰ã€‚
- å£å¾„:企业名称取两年 1-8 æœˆçš„交集,与白天确认的「持续在规企业 545 å®¶ã€å®Œå…¨ä¸€è‡´ï¼›
  å•位统一 Ã·10000 è¾“出「万吨 / ä¸‡å¨å…¬é‡Œã€ã€‚
- ç»“果:
| å£å¾„ | ä¼ä¸šæ•° | è´§è¿é‡2025(万吨) | è´§è¿é‡2026(万吨) | è´§è¿é‡åŒæ¯” | å‘¨è½¬é‡2025(万吨公里) | å‘¨è½¬é‡2026(万吨公里) | å‘¨è½¬é‡åŒæ¯” |
| --- | --- | --- | --- | --- | --- | --- | --- |
| åŒåä¼ä¸š | 545 | 30153.14 | 27752.68 | âˆ’7.96% | 4635340.46 | 4389882.05 | âˆ’5.30% |
| å…¨é‡ | 664 / 636 | 33994.45 | 31399.82 | â€” | 5102518.95 | 4927161.77 | â€” |
同名口径的 2026 å¹´ç´¯è®¡æ•°ä¸Žç™½å¤©äº¤ä»˜ä»¶å…¨çœè¡Œï¼ˆ27752.6820 ä¸‡å¨ / 4389882.0468 ä¸‡å¨å…¬é‡Œï¼‰å®Œå…¨ä¸€è‡´ï¼Œä¸¤æ¡é“¾è·¯äº’证通过。
全量与同名口径的差额也已算清:2026 å¹´æ–°è¿› 91 å®¶ï¼ˆ+3647.14 ä¸‡å¨ / +537279.73 ä¸‡å¨å…¬é‡Œï¼‰ï¼Œ
2025 å¹´é€€å‡º 119 å®¶ï¼ˆâˆ’3841.31 ä¸‡å¨ / âˆ’467178.48 ä¸‡å¨å…¬é‡Œï¼‰ã€‚
## äºŒã€æµ‹è¯•结果摘要
见《功能测试报告_持续在规企业545家分市州累计运距同比_2026-09-19.md》:11 æ¡ç”¨ä¾‹ï¼ˆ7 æ­£å‘ / 3 è¾¹ç•Œ / 1 è´Ÿå‘)全部通过。
- æ˜Žç»† 545 è¡Œæ±‚å’Œ = æ±‡æ€»é¡µå…¨çœè¡Œï¼ˆ27752.6820 ä¸‡å¨ / 4389882.0468 ä¸‡å¨å…¬é‡Œï¼Œå·®å¼‚ 0);
- å…¨çœè¡Œ = Î£17 å¸‚å·žï¼›17 ä¸ªå¸‚州与用户表格逐行一致;
- ä»™æ¡ƒå¸‚无可比基数、累计货运量为 0 çš„企业均已防除零处理。
- åŒåä¼ä¸šå£å¾„ SQL è„šæœ¬å·²æ•´è„šæœ¬æ‰§è¡ŒéªŒè¯ï¼š12 æ¡ç”¨ä¾‹ï¼ˆ8 æ­£å‘ / 2 è´Ÿå‘ / 2 è¾¹ç•Œï¼‰å…¨éƒ¨é€šè¿‡ï¼›
  æ˜Žç»† 545 è¡Œæ±‚å’Œ = æ±‡æ€»è¡Œï¼ˆå·®å¼‚ 0),差异企业闭合校验通过。
## ä¸‰ã€é—留问题与待办
1. ç”¨æˆ·è¡¨æ ¼ O åˆ—高速运距同比的来源/期间待确认(需与 N åŒä¸º 1-8 æœˆç´¯è®¡ï¼‰ï¼Œç¡®è®¤åŽæ–¹å¯ç®—「运距增速差」。
2. 09-18 äº¤ä»˜çš„《货运月报_持续在规企业_分市州1-8月累计运距及同比》采用**官方全口径**(同比 +4.54%);
   æœ¬è¡¨é‡‡ç”¨**两年持续在规 545 å®¶å£å¾„**(同比 +2.90%),两版口径不同但都已注明,供业务按场景选用。
3. è‹¥è¯¥è¡¨è¦éšã€Šå·®å¼‚率汇总表》上报,建议加注两种口径的差异原因(规上企业名单变动)。
## å››ã€æ˜Žå¤©è®¡åˆ’
1. è§†ç”¨æˆ·åé¦ˆç¡®å®šä¸ŠæŠ¥å£å¾„(545 å®¶ vs å…¨å£å¾„),必要时合并成一版双口径表。
2. é«˜é€Ÿæ•°æ®æ¥æºç¡®è®¤åŽè¡¥ç®—「运距增速差」。
docs/¹¤¾ß/³ÖÐøÔÚ¹æÆóÒµ545¼ÒÀÛ¼ÆÔ˾àÉú³É.py
New file
@@ -0,0 +1,174 @@
# -*- coding: utf-8 -*-
"""持续在规企业(545 å®¶ï¼‰åˆ†å¸‚å·ž 1-8 æœˆç´¯è®¡å¹³å‡è¿è·åŠåŒæ¯” å°è´¦
口径:
  Â· æŒç»­åœ¨è§„企业 = 2025 å¹´ 1-8 æœˆä¸Ž 2026 å¹´ 1-8 æœˆå‡è¿žç»­ 8 ä¸ªæœˆä¸ŠæŠ¥ H203-2 æœˆæŠ¥çš„企业(545 å®¶ï¼‰ï¼›
  Â· ç´¯è®¡å¹³å‡è¿è·ï¼ˆå…¬é‡Œï¼‰= 1-8 æœˆç´¯è®¡è´§ç‰©å‘¨è½¬é‡ Ã· 1-8 æœˆç´¯è®¡è´§è¿é‡ï¼ˆåŠ æƒå¹³å‡ï¼‰ï¼›
  Â· åŒæ¯” = 2026 å¹´ 1-8 æœˆç´¯è®¡å¹³å‡è¿è· Ã· 2025 å¹´ 1-8 æœˆç´¯è®¡å¹³å‡è¿è· âˆ’ 1。
数据源:traffic_audit.h2032_enterprise_monthly å¯¼å‡ºä»¶ _tmp_persist_scope.tsv
"""
import io, os
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter
SRC = r'D:\文档\ChatGPT\traffic-audit\_tmp_persist_scope.tsv'
OUT = r'D:\文档\ChatGPT\traffic-audit\outputs\持续在规企业545å®¶_分市州1-8月累计运距及同比_2026-09-19.xlsx'
ORDER = ['武汉市', '黄石市', '十堰市', '宜昌市', '襄阳市', '鄂州市', '荆门市', '孝感市', '荆州市',
         '黄冈市', '咸宁市', '随州市', '恩施州', '仙桃市', '潜江市', '天门市', '神农架林区']
SHORT = {'武汉市': '武汉', '黄石市': '黄石', '十堰市': '十堰', '宜昌市': '宜昌', '襄阳市': '襄阳', '鄂州市': '鄂州',
         '荆门市': '荆门', '孝感市': '孝感', '荆州市': '荆州', '黄冈市': '黄冈', '咸宁市': '咸宁', '随州市': '随州',
         '恩施州': '恩施州', '仙桃市': '仙桃', '潜江市': '潜江', '天门市': '天门', '神农架林区': '林区'}
CITY = dict(zip(['4201', '4202', '4203', '4205', '4206', '4207', '4208', '4209', '4210', '4211', '4212', '4213', '4228'],
                ORDER[:13]))
CITY.update({'429004': '仙桃市', '429005': '潜江市', '429006': '天门市', '429021': '神农架林区'})
def city_of(rc):
    rc = (rc or '').strip()
    return CITY.get(rc, CITY.get(rc[:4], '?'))
def dv(f, t):
    return (t / f) if f else None
def gth(a, b):
    return (a / b - 1) if (a is not None and b) else None
def num(x):
    try:
        return float(x)
    except Exception:
        return 0.0
rows = []
with io.open(SRC, 'r', encoding='utf-8') as fh:
    hdr = fh.readline().rstrip('\r\n').split('\t')
    for line in fh:
        p = line.rstrip('\r\n').split('\t')
        if len(p) < len(hdr):
            continue
        d = dict(zip(hdr, p))
        if int(num(d['m26'])) != 8 or int(num(d['m25'])) != 8:
            continue
        rows.append(dict(city=city_of(d['rc']), en=d['en'], ec=d['ec'], ucc=d['ucc'],
                         f26=num(d['f26']), t26=num(d['t26']), f25=num(d['f25']), t25=num(d['t25'])))
by_city = {}
for r in rows:
    c = by_city.setdefault(r['city'], dict(n=0, f26=0.0, t26=0.0, f25=0.0, t25=0.0))
    c['n'] += 1
    c['f26'] += r['f26']; c['t26'] += r['t26']; c['f25'] += r['f25']; c['t25'] += r['t25']
tot = dict(n=0, f26=0.0, t26=0.0, f25=0.0, t25=0.0)
for c in by_city.values():
    for k in tot:
        tot[k] += c[k]
THIN = Side(style='thin', color='BFBFBF')
BORDER = Border(left=THIN, right=THIN, top=THIN, bottom=THIN)
HDR_FILL = PatternFill('solid', fgColor='DDEBF7')
TOT_FILL = PatternFill('solid', fgColor='FFF2CC')
TITLE_FILL = PatternFill('solid', fgColor='1F4E79')
CT = Alignment(horizontal='center', vertical='center', wrap_text=True)
LT = Alignment(horizontal='left', vertical='center', wrap_text=True)
RT = Alignment(horizontal='right', vertical='center')
NF2, NFP = '#,##0.00', '0.00%'
wb = Workbook()
ws = wb.active
ws.title = '市州汇总'
heads = ['市州', '持续在规企业数(å®¶)', '2026å¹´1-8月累计货运量(万吨)', '2026å¹´1-8月累计货物周转量(万吨公里)',
         '2026å¹´1-8月累计平均运距(公里)', '2025å¹´1-8月累计平均运距(公里)', '累计运距同比(%)', '备注']
widths = [12, 16, 22, 26, 22, 22, 14, 46]
ws.cell(1, 1, '持续在规企业(545 å®¶ï¼‰åˆ†å¸‚å·ž 1-8 æœˆç´¯è®¡å¹³å‡è¿è·åŠåŒæ¯”').font = Font(bold=True, size=14, color='FFFFFF')
ws.cell(1, 1).fill = TITLE_FILL
ws.cell(1, 1).alignment = Alignment(horizontal='center', vertical='center')
ws.merge_cells(start_row=1, start_column=1, end_row=1, end_column=len(heads))
ws.row_dimensions[1].height = 28
notes = [
    '口径说明:',
    '① æŒç»­åœ¨è§„企业 = 2025 å¹´ 1-8 æœˆä¸Ž 2026 å¹´ 1-8 æœˆå‡è¿žç»­ 8 ä¸ªæœˆä¸ŠæŠ¥ã€Šé“路货物运输月度生产情况》(H203-2)月报的企业,共 %d å®¶ï¼›ä¸¤å¹´é—´æ–°è¿›ã€é€€å‡ºçš„企业不计入本表同比。' % tot['n'],
    '② ç´¯è®¡å¹³å‡è¿è·ï¼ˆå…¬é‡Œï¼‰= 1-8 æœˆç´¯è®¡è´§ç‰©å‘¨è½¬é‡ Ã· 1-8 æœˆç´¯è®¡è´§è¿é‡ï¼ˆåŠ æƒå¹³å‡ï¼‰ï¼›åŒæ¯” = 2026 å¹´ 1-8 æœˆç´¯è®¡å¹³å‡è¿è· Ã· 2025 å¹´ 1-8 æœˆç´¯è®¡å¹³å‡è¿è· âˆ’ 1。',
    '③ å…¨çœè¡Œ = 17 ä¸ªå¸‚州之和(按累计周转量、累计货运量分别求和后相除,不是市州同比的算术平均)。',
    '④ ä»™æ¡ƒå¸‚ 2026 å¹´æŒç»­åœ¨è§„çš„ 2 å®¶ä¼ä¸š 2025 å¹´ 1-8 æœˆæ— è¿žç»­ä¸ŠæŠ¥è®°å½•,本表无可比基数,同比不适用。',
    '数据来源:交通统计报表审核系统数据库(H203-2 ä¼ä¸šæœˆæŠ¥ï¼Œ2025 å¹´ 1 æœˆâ€”2026 å¹´ 8 æœˆï¼‰ã€‚生成日期:2026-09-19。',
]
r = 2
for i, t in enumerate(notes):
    c = ws.cell(r, 1, t)
    c.font = Font(size=9, bold=(i == 0), color='404040')
    c.alignment = LT
    ws.merge_cells(start_row=r, start_column=1, end_row=r, end_column=len(heads))
    r += 1
hdr_row = r
for j, h in enumerate(heads, 1):
    c = ws.cell(hdr_row, j, h)
    c.font = Font(bold=True); c.fill = HDR_FILL; c.alignment = CT; c.border = BORDER
    ws.column_dimensions[get_column_letter(j)].width = widths[j - 1]
ws.row_dimensions[hdr_row].height = 42
def put(row, vals, fill=None, bold=False):
    for j, v in enumerate(vals, 1):
        c = ws.cell(row, j, v)
        c.border = BORDER
        c.alignment = LT if j == 8 else (CT if j == 1 else RT)
        if j in (3, 4, 5, 6):
            c.number_format = NF2
        elif j == 7:
            c.number_format = NFP
        if fill:
            c.fill = fill
        if bold:
            c.font = Font(bold=True)
rr = hdr_row
d26 = dv(tot['f26'], tot['t26']); d25 = dv(tot['f25'], tot['t25'])
rr += 1
put(rr, ['全省', tot['n'], tot['f26'] / 10000.0, tot['t26'] / 10000.0, d26, d25, gth(d26, d25), ''], TOT_FILL, True)
for city in ORDER:
    c = by_city.get(city)
    rr += 1
    if not c or c['n'] == 0:
        put(rr, [SHORT[city], 0, None, None, None, None, None,
                 '该市州 2026 å¹´æŒç»­åœ¨è§„企业在 2025 å¹´ 1-8 æœˆæ— è¿žç»­ä¸ŠæŠ¥è®°å½•,同比不适用'])
        continue
    a, b = dv(c['f26'], c['t26']), dv(c['f25'], c['t25'])
    put(rr, [SHORT[city], c['n'], c['f26'] / 10000.0, c['t26'] / 10000.0, a, b, gth(a, b), ''])
ws.freeze_panes = ws.cell(hdr_row + 1, 2).coordinate
# ä¼ä¸šæ˜Žç»†
ws2 = wb.create_sheet('企业明细(545å®¶)')
h2 = ['序号', '市州', '企业名称', '统一社会信用代码', '2026å¹´1-8月货运量(万吨)', '2026å¹´1-8月周转量(万吨公里)',
      '2026å¹´1-8月累计平均运距(公里)', '2025å¹´1-8月累计平均运距(公里)', '累计运距同比(%)']
w2 = [6, 12, 42, 24, 20, 24, 22, 22, 14]
for j, h in enumerate(h2, 1):
    c = ws2.cell(1, j, h)
    c.font = Font(bold=True); c.fill = HDR_FILL; c.alignment = CT; c.border = BORDER
    ws2.column_dimensions[get_column_letter(j)].width = w2[j - 1]
ws2.row_dimensions[1].height = 40
order = {c: i for i, c in enumerate(ORDER)}
idx = 0
for i, x in enumerate(sorted(rows, key=lambda z: (order.get(z['city'], 99), -z['t26'])), 1):
    a, b = dv(x['f26'], x['t26']), dv(x['f25'], x['t25'])
    vals = [i, SHORT[x['city']], x['en'], x['ucc'], x['f26'] / 10000.0, x['t26'] / 10000.0, a, b, gth(a, b)]
    for j, v in enumerate(vals, 1):
        c = ws2.cell(i + 1, j, v)
        c.border = BORDER
        c.alignment = LT if j in (3, 4) else (CT if j in (1, 2) else RT)
        if j in (5, 6, 7, 8):
            c.number_format = NF2
        elif j == 9:
            c.number_format = NFP
ws2.freeze_panes = 'C2'
ws2.auto_filter.ref = 'A1:I%d' % (len(rows) + 1)
os.makedirs(os.path.dirname(OUT), exist_ok=True)
wb.save(OUT)
print('OK ->', OUT)
print('企业数 %d;全省 2026 %.4f / 2025 %.4f -> %.4f%%' % (tot['n'], d26, d25, gth(d26, d25) * 100))
docs/Éú³É»ã×Ü´ó±í/ͬÃûÆóÒµ_1-8ÔÂÀۼƶԱÈ_2026-09-19.sql
New file
@@ -0,0 +1,201 @@
-- ============================================================
-- 2025 / 2026 å¹´ 1-8 æœˆç´¯è®¡ è´§è¿é‡ã€è´§ç‰©å‘¨è½¬é‡ æ±‡æ€»ï¼ˆåŒåä¼ä¸šå£å¾„)
-- ç”Ÿæˆæ—¥æœŸï¼š2026-09-19   æ•°æ®åº“:traffic_audit(MySQL 8.0.29)
-- ------------------------------------------------------------
-- æ•°æ®æ¥æºè¡¨ï¼šh2032_enterprise_monthly
--   ã€Šé“路货物运输月度生产情况表》= äº¤ä¼ç»ŸH203-2表,企业级月报(规上企业)
--   å­—段:freight_total   è´§è¿é‡_总计(吨)
--         turnover_total  è´§ç‰©å‘¨è½¬é‡_总计(吨公里)
--         report_period   æŠ¥è¡¨æœŸï¼Œæ ¼å¼ 'YYYY-MM'
--         enterprise_name ä¼ä¸šåç§°
-- å•位换算:表内存的是「吨 / å¨å…¬é‡Œã€ï¼ŒæŠ¥è¡¨å£å¾„是「万吨 / ä¸‡å¨å…¬é‡Œã€ï¼Œ
--          æ‰€ä»¥ä¸‹é¢ç»Ÿä¸€ Ã·10000。
-- æœŸé—´å–法:1-8 æœˆ = report_period BETWEEN '2025-01' AND '2025-08'
--          ï¼ˆreport_period æ˜¯å­—符串 'YYYY-MM',直接比大小即可)
-- ä¸ºä»€ä¹ˆè¦ã€ŒåŒåä¼ä¸šå£å¾„」:
--   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%
-- ============================================================
-- =====================================================================
-- æŸ¥è¯¢ 1:汇总一行 â€”— åŒåä¼ä¸šå£å¾„的两年累计数 + åŒæ¯”增速
-- =====================================================================
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_万吨,
       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 >= '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_万吨公里,
       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 >= '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 å‘¨è½¬é‡åŒæ¯”_百分比
FROM h2032_enterprise_monthly e
-- ä¸‹é¢ä¸¤ä¸ª JOIN:只要两年 1-8 æœˆéƒ½æŠ¥é€è¿‡çš„企业(同名企业口径的核心)
JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
       WHERE report_period BETWEEN '2025-01' AND '2025-08') a
  ON a.enterprise_name = e.enterprise_name
JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
       WHERE report_period BETWEEN '2026-01' AND '2026-08') b
  ON b.enterprise_name = e.enterprise_name
WHERE e.report_period BETWEEN '2025-01' AND '2026-08';
-- =====================================================================
-- æŸ¥è¯¢ 2:逐企业对照明细(同名企业,两年并排),可直接导出 Excel
--   æŒ‰ 2026 å¹´è´§è¿é‡ä»Žå¤§åˆ°å°æŽ’;去掉 ORDER BY å°±æ˜¯å®Œæ•´ 545 è¡Œã€‚
-- =====================================================================
SELECT e.enterprise_name                                                   AS ä¼ä¸šåç§°,
       MAX(CASE WHEN e.report_period >= '2026-01' THEN e.region_code END)  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 >= '2026-01' THEN e.freight_total ELSE 0 END)
            - SUM(CASE WHEN e.report_period <= '2025-08' THEN e.freight_total ELSE 0 END)) / 10000, 2) AS è´§è¿é‡å¢žå‡_万吨,
       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_万吨公里,
       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 >= '2026-01' THEN e.turnover_total ELSE 0 END)
            - SUM(CASE WHEN e.report_period <= '2025-08' THEN e.turnover_total ELSE 0 END)) / 10000, 2) AS å‘¨è½¬é‡å¢žå‡_万吨公里,
       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 å‘¨è½¬é‡åŒæ¯”_百分比
FROM h2032_enterprise_monthly e
JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
       WHERE report_period BETWEEN '2025-01' AND '2025-08') a
  ON a.enterprise_name = e.enterprise_name
JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
       WHERE report_period BETWEEN '2026-01' AND '2026-08') b
  ON b.enterprise_name = e.enterprise_name
WHERE e.report_period BETWEEN '2025-01' AND '2026-08'
GROUP BY e.enterprise_name
ORDER BY è´§è¿é‡2026_万吨 DESC;
-- =====================================================================
-- æŸ¥è¯¢ 3:三种口径对照 â€”— çœ‹æ¸…楚「全量」和「同名」差在哪
--   ALL_2025 / ALL_2026   : å„自年份的全部企业
--   SAME_2025 / SAME_2026 : åŒåä¼ä¸šå£å¾„(545 å®¶ï¼‰
-- =====================================================================
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 å‘¨è½¬é‡_万吨公里
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'
  UNION ALL
  SELECT 'ALL_2026', enterprise_name, freight_total, turnover_total
    FROM h2032_enterprise_monthly WHERE report_period BETWEEN '2026-01' AND '2026-08'
  UNION ALL
  SELECT 'SAME_2025', e.enterprise_name, e.freight_total, e.turnover_total
    FROM h2032_enterprise_monthly e
    JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
           WHERE report_period BETWEEN '2025-01' AND '2025-08') a ON a.enterprise_name = e.enterprise_name
    JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
           WHERE report_period BETWEEN '2026-01' AND '2026-08') b ON b.enterprise_name = e.enterprise_name
   WHERE e.report_period BETWEEN '2025-01' AND '2025-08'
  UNION ALL
  SELECT 'SAME_2026', e.enterprise_name, e.freight_total, e.turnover_total
    FROM h2032_enterprise_monthly e
    JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
           WHERE report_period BETWEEN '2025-01' AND '2025-08') a ON a.enterprise_name = e.enterprise_name
    JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
           WHERE report_period BETWEEN '2026-01' AND '2026-08') b ON b.enterprise_name = e.enterprise_name
   WHERE e.report_period BETWEEN '2026-01' AND '2026-08'
) t
GROUP BY t.scope_type
ORDER BY t.scope_type;
-- =====================================================================
-- æŸ¥è¯¢ 4:差异企业名单(核对用)—— åªåœ¨ä¸€å¹´æŠ¥é€çš„企业及其累计量
--   only_in = 2025 / 2026
--   å®žæµ‹ï¼š2025 å¹´ç‹¬æœ‰ 119 å®¶ã€2026 å¹´ç‹¬æœ‰ 91 å®¶ï¼ˆ1-8 æœˆå£å¾„)
-- =====================================================================
SELECT '2025' AS only_in, e.enterprise_name AS ä¼ä¸šåç§°,
       ROUND(SUM(e.freight_total) / 10000, 2) AS è´§è¿é‡_万吨,
       ROUND(SUM(e.turnover_total) / 10000, 2) AS å‘¨è½¬é‡_万吨公里
FROM h2032_enterprise_monthly e
LEFT JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
            WHERE report_period BETWEEN '2026-01' AND '2026-08') b
       ON b.enterprise_name = e.enterprise_name
WHERE e.report_period BETWEEN '2025-01' AND '2025-08' AND b.enterprise_name IS NULL
GROUP BY e.enterprise_name
UNION ALL
SELECT '2026', e.enterprise_name,
       ROUND(SUM(e.freight_total) / 10000, 2),
       ROUND(SUM(e.turnover_total) / 10000, 2)
FROM h2032_enterprise_monthly e
LEFT JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
            WHERE report_period BETWEEN '2025-01' AND '2025-08') a
       ON a.enterprise_name = e.enterprise_name
WHERE e.report_period BETWEEN '2026-01' AND '2026-08' AND a.enterprise_name IS NULL
GROUP BY e.enterprise_name
ORDER BY only_in, è´§è¿é‡_万吨 DESC;
-- =====================================================================
-- æŸ¥è¯¢ 5:分市州「同名企业口径」两年累计对照
--   åœ°åŒºä»£ç å– 2026 å¹´é‚£æ¡è®°å½•çš„ region_code
-- =====================================================================
SELECT CASE
         WHEN region_code LIKE '4201%' THEN '武汉' WHEN region_code LIKE '4202%' THEN '黄石'
         WHEN region_code LIKE '4203%' THEN '十堰' WHEN region_code LIKE '4205%' THEN '宜昌'
         WHEN region_code LIKE '4206%' THEN '襄阳' WHEN region_code LIKE '4207%' THEN '鄂州'
         WHEN region_code LIKE '4208%' THEN '荆门' WHEN region_code LIKE '4209%' THEN '孝感'
         WHEN region_code LIKE '4210%' THEN '荆州' WHEN region_code LIKE '4211%' THEN '黄冈'
         WHEN region_code LIKE '4212%' THEN '咸宁' WHEN region_code LIKE '4213%' THEN '随州'
         WHEN region_code LIKE '4228%' THEN '恩施' WHEN region_code LIKE '429004%' THEN '仙桃'
         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_万吨公里
FROM (
  SELECT e.enterprise_name,
         MAX(CASE WHEN e.report_period >= '2026-01' THEN e.region_code END)    AS region_code,
         SUM(CASE WHEN e.report_period <= '2025-08' THEN e.freight_total  ELSE 0 END) AS freight_2025,
         SUM(CASE WHEN e.report_period >= '2026-01' THEN e.freight_total  ELSE 0 END) AS freight_2026,
         SUM(CASE WHEN e.report_period <= '2025-08' THEN e.turnover_total ELSE 0 END) AS turnover_2025,
         SUM(CASE WHEN e.report_period >= '2026-01' THEN e.turnover_total ELSE 0 END) AS turnover_2026
  FROM h2032_enterprise_monthly e
  JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
         WHERE report_period BETWEEN '2025-01' AND '2025-08') a ON a.enterprise_name = e.enterprise_name
  JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
         WHERE report_period BETWEEN '2026-01' AND '2026-08') b ON b.enterprise_name = e.enterprise_name
  WHERE e.report_period BETWEEN '2025-01' AND '2026-08'
  GROUP BY e.enterprise_name
) d
GROUP BY å¸‚å·ž
ORDER BY è´§è¿é‡2026_万吨 DESC;
-- =====================================================================
-- æŸ¥è¯¢ 6:数据体检 â€”— åŒåä¼ä¸šé‡Œæœˆä»½ä¸è¶³ 8 ä¸ªæœˆçš„(累计数会偏小,比对时注意)
--   æ­£å¸¸ï¼š2025 å¹´ 1-8 æœˆ 8 æ¡ + 2026 å¹´ 1-8 æœˆ 8 æ¡
--   å®žæµ‹ï¼šæ— å¼‚常企业,全部 545 å®¶ä¸¤å¹´å„ 8 ä¸ªæœˆé½å…¨
-- =====================================================================
SELECT e.enterprise_name AS ä¼ä¸šåç§°,
       SUM(CASE WHEN e.report_period BETWEEN '2025-01' AND '2025-08' THEN 1 ELSE 0 END) AS è®°å½•æ•°2025,
       SUM(CASE WHEN e.report_period BETWEEN '2026-01' AND '2026-08' THEN 1 ELSE 0 END) AS è®°å½•æ•°2026
FROM h2032_enterprise_monthly e
JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
       WHERE report_period BETWEEN '2025-01' AND '2025-08') a ON a.enterprise_name = e.enterprise_name
JOIN (SELECT DISTINCT enterprise_name FROM h2032_enterprise_monthly
       WHERE report_period BETWEEN '2026-01' AND '2026-08') b ON b.enterprise_name = e.enterprise_name
WHERE e.report_period BETWEEN '2025-01' AND '2026-08'
GROUP BY e.enterprise_name
HAVING è®°å½•æ•°2025 <> 8 OR è®°å½•æ•°2026 <> 8;