-- ============================================
-- 为合同成本按月统计表（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;


