-- =============================================
-- 门店耗卡业绩统计视图创建脚本
-- 功能：统计所有门店的目标业绩、耗卡业绩、完成率等关键指标
-- 作者：系统自动生成
-- 创建时间：2025年
-- =============================================

-- 先删除视图（如果存在）
DROP VIEW IF EXISTS v_store_consume_performance_simple;

-- =============================================
-- 创建门店耗卡业绩统计视图（当月数据）
-- =============================================
CREATE VIEW v_store_consume_performance_simple AS
SELECT
    `md`.`F_Id` AS `store_id`,
    `md`.`djmd` AS `store_code`,
    `md`.`dm` AS `store_name`,
    COALESCE(`md`.`xsyj`, 0) AS `target_performance`,
    COALESCE(`consume`.`consume_performance`, 0) AS `actual_performance`,
    (
        CASE
            WHEN (COALESCE(`md`.`xsyj`, 0) > 0) THEN
                round(
                    (
                        (
                            COALESCE(`consume`.`consume_performance`, 0) / `md`.`xsyj`
                        ) * 100
                    ),
                    2
                ) ELSE 0
            END
        ) AS `completion_rate`,
        COALESCE(`consume`.`consume_count`, 0) AS `order_count`
    FROM
        (
            `lqerp`.`lq_mdxx` `md`
            LEFT JOIN (
                SELECT
                    `hk`.`md` AS `md`,
                    sum(COALESCE(`px`.`F_TotalPrice`, 0)) AS `consume_performance`,
                    count(DISTINCT `hk`.`F_Id`) AS `consume_count`
                FROM
                    (
                        `lqerp`.`lq_xh_hyhk` `hk`
                        LEFT JOIN `lqerp`.`lq_xh_pxmx` `px` ON ((`hk`.`F_Id` = `px`.`glkdbh`))
                    )
                WHERE
                    (
                        (
                            YEAR(`hk`.`hksj`) = YEAR(curdate())
                        )
                        AND (
                            MONTH(`hk`.`hksj`) = MONTH(curdate())
                        )
                        AND (
                            isnull(`px`.`F_CreateTIme`)
                            OR (
                                (
                                    YEAR(`px`.`F_CreateTIme`) = YEAR(curdate())
                                )
                                AND (
                                    MONTH(`px`.`F_CreateTIme`) = MONTH(curdate())
                                )
                            )
                        )
                    )
                GROUP BY
                    `hk`.`md`
            ) `consume` ON ((`md`.`F_Id` = `consume`.`md`))
        )
    ORDER BY
    COALESCE(`consume`.`consume_performance`, 0) DESC;

-- =============================================
-- 添加视图注释
-- =============================================
ALTER VIEW v_store_consume_performance_simple COMMENT = '门店耗卡业绩统计视图（当月数据）- 统计所有门店的目标业绩、耗卡业绩、完成率等关键指标';

-- =============================================
-- 视图字段说明
-- =============================================
/*
字段说明：
- store_id: 门店ID（来自lq_mdxx.F_Id）
- store_code: 门店编码（来自lq_mdxx.djmd）
- store_name: 店名（来自lq_mdxx.dm）
- target_performance: 目标业绩/生命线（来自lq_mdxx.xsyj）
- actual_performance: 耗卡业绩（来自lq_xh_pxmx.F_TotalPrice的汇总）
- completion_rate: 完成率百分比（actual_performance / target_performance * 100）
- order_count: 耗卡记录数（有效耗卡记录数）

关联说明：
- 主表：lq_mdxx（门店信息表）
- 关联表：lq_xh_hyhk（耗卡记录表）+ lq_xh_pxmx（耗卡品项表）
- 关联条件：lq_mdxx.F_Id = lq_xh_hyhk.md, lq_xh_hyhk.F_Id = lq_xh_pxmx.glkdbh
- 关联方式：LEFT JOIN（确保所有门店都显示，包括没有耗卡记录的门店）

数据来源：
- 目标业绩：lq_mdxx.xsyj（目标-门店生命线）
- 耗卡业绩：lq_xh_pxmx.F_TotalPrice（金额合计）
- 耗卡记录数：lq_xh_hyhk表记录数统计

时间过滤：
- 耗卡日期：lq_xh_hyhk.hksj（当月）
- 品项创建时间：lq_xh_pxmx.F_CreateTIme（当月）

注意事项：
1. 使用金额合计（F_TotalPrice）而不是品项价格（pxjg）
2. 只统计当月的数据（耗卡日期和品项创建时间都是当月）
3. 即使目标业绩、耗卡业绩为0的门店也会显示
4. 完成率计算时，目标业绩为0的门店显示0%完成率
5. 按耗卡业绩降序排列，便于查看业绩排名
6. 确保耗卡品项也是当月创建的，避免历史数据干扰
*/

-- =============================================
-- 使用示例
-- =============================================
/*
-- 查看所有门店当月耗卡业绩
SELECT * FROM v_store_consume_performance_simple;

-- 查看华润店当月耗卡业绩
SELECT * FROM v_store_consume_performance_simple WHERE store_name LIKE '%华润%';

-- 查看已完成目标的门店（当月耗卡）
SELECT * FROM v_store_consume_performance_simple WHERE completion_rate >= 100;

-- 查看零耗卡业绩的门店（当月）
SELECT * FROM v_store_consume_performance_simple WHERE actual_performance = 0;

-- 按完成率排名（当月耗卡）
SELECT * FROM v_store_consume_performance_simple WHERE target_performance > 0 ORDER BY completion_rate DESC;

-- 查看当月耗卡业绩前10名门店
SELECT * FROM v_store_consume_performance_simple ORDER BY actual_performance DESC LIMIT 10;

-- 查看当月完成率低于50%的门店
SELECT * FROM v_store_consume_performance_simple WHERE completion_rate < 50 AND target_performance > 0;
*/
