-- ============================================================ -- 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;