-- ============================================ -- 为合同成本按月统计表(lq_contract_monthly_cost)添加分类字段 -- ============================================ -- 说明:此脚本为合同成本表添加分类字段,用于按分类统计合同成本 -- -- 字段说明: -- F_Category:分类(冗余字段,便于按分类统计) -- -- 业务含义: -- - 分类字段用于区分不同类型的合同(如:租门店、员工宿舍、车辆、场所等) -- - 便于后续按分类统计合同成本 -- -- 注意事项: -- - 字段类型为VARCHAR(100),允许为NULL(历史数据可能没有分类) -- - 字段位置:放在 F_StoreName 字段之后 -- - 创建后需要更新历史数据,从合同表中获取对应的分类 -- ============================================ -- 1. 添加分类字段 -- ============================================ ALTER TABLE `lq_contract_monthly_cost` ADD COLUMN `F_Category` VARCHAR(100) NULL COMMENT '分类(冗余字段,便于按分类统计)' AFTER `F_StoreName`; -- ============================================ -- 2. 添加分类索引 -- ============================================ ALTER TABLE `lq_contract_monthly_cost` ADD INDEX `idx_category` (`F_Category`) COMMENT '分类索引'; -- ============================================ -- 3. 添加分类+月份联合索引 -- ============================================ ALTER TABLE `lq_contract_monthly_cost` ADD INDEX `idx_category_month` (`F_Category`, `F_Month`) COMMENT '分类+月份联合索引'; -- ============================================ -- 4. 更新历史数据:从合同表中获取分类 -- ============================================ UPDATE `lq_contract_monthly_cost` cost INNER JOIN `lq_contract` contract ON cost.F_ContractId = contract.F_Id SET cost.F_Category = contract.F_Category WHERE cost.F_Category IS NULL AND contract.F_Category IS NOT NULL; -- ============================================ -- 5. 验证更新结果 -- ============================================ -- 查看更新后的统计信息 SELECT COUNT(*) as TotalCount, COUNT(F_Category) as HasCategoryCount, COUNT(*) - COUNT(F_Category) as NullCategoryCount FROM lq_contract_monthly_cost WHERE F_IsEffective = 1; -- 查看各分类的统计信息 SELECT F_Category, COUNT(*) as RecordCount, SUM(F_MonthlyCost) as TotalCost FROM lq_contract_monthly_cost WHERE F_IsEffective = 1 GROUP BY F_Category ORDER BY TotalCost DESC;