[已用]创建门店业绩统计视图.sql 4.79 KB
-- =============================================
-- 门店业绩统计视图创建脚本
-- 功能:统计所有门店的目标业绩、完成业绩、完成率等关键指标
-- 作者:系统自动生成
-- 创建时间:2025年
-- =============================================

-- 先删除视图(如果存在)
DROP VIEW IF EXISTS v_store_performance_simple;

-- =============================================
-- 创建门店业绩统计视图(当月数据)
-- =============================================
CREATE VIEW v_store_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 ( `actual`.`actual_performance`, 0 ) AS `actual_performance`,
	(
		CASE
				
				WHEN ( COALESCE ( `md`.`xsyj`, 0 ) > 0 ) THEN
				round(
					(
						(
							COALESCE ( `actual`.`actual_performance`, 0 ) / `md`.`xsyj` 
						) * 100 
					),
					2 
				) ELSE 0 
				END 
			) AS `completion_rate`,
			COALESCE ( `actual`.`order_count`, 0 ) AS `order_count` 
		FROM
			(
				`lqerp`.`lq_mdxx` `md`
				LEFT JOIN (
					SELECT
						`kd`.`djmd` AS `djmd`,
						sum( COALESCE ( `px`.`F_TotalPrice`, 0 ) ) AS `actual_performance`,
						count( DISTINCT `kd`.`F_Id` ) AS `order_count` 
					FROM
						(
							`lqerp`.`lq_kd_kdjlb` `kd`
							LEFT JOIN `lqerp`.`lq_kd_pxmx` `px` ON ( ( `kd`.`F_Id` = `px`.`glkdbh` ) ) 
						) 
					WHERE
						(
							(
								YEAR ( `kd`.`kdrq` ) = YEAR ( curdate( ) ) 
							) 
							AND (
								MONTH ( `kd`.`kdrq` ) = MONTH ( curdate( ) ) 
							) 
							AND (
								isnull( `px`.`F_CreateTIme` ) 
								OR (
									(
										YEAR ( `px`.`F_CreateTIme` ) = YEAR ( curdate( ) ) 
									) 
									AND (
										MONTH ( `px`.`F_CreateTIme` ) = MONTH ( curdate( ) ) 
									) 
								) 
							) 
						) 
					GROUP BY
						`kd`.`djmd` 
				) `actual` ON ( ( `md`.`F_Id` = `actual`.`djmd` ) ) 
			) 
		ORDER BY
	COALESCE ( `actual`.`actual_performance`, 0 ) DESC

-- =============================================
-- 添加视图注释
-- =============================================
ALTER VIEW v_store_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_kd_pxmx.F_TotalPrice的汇总)
- completion_rate: 完成率百分比(actual_performance / target_performance * 100)
- order_count: 开单数量(有效开单记录数)

关联说明:
- 主表:lq_mdxx(门店信息表)
- 关联表:lq_kd_kdjlb(开单记录表)+ lq_kd_pxmx(开单品项表)
- 关联条件:lq_mdxx.F_Id = lq_kd_kdjlb.djmd, lq_kd_kdjlb.F_Id = lq_kd_pxmx.glkdbh
- 关联方式:LEFT JOIN(确保所有门店都显示,包括没有开单记录的门店)

数据来源:
- 目标业绩:lq_mdxx.xsyj(目标-门店生命线)
- 完成业绩:lq_kd_pxmx.F_TotalPrice(金额合计)
- 开单数量:lq_kd_kdjlb表记录数统计

时间过滤:
- 开单日期:lq_kd_kdjlb.kdrq(当月)
- 品项创建时间:lq_kd_pxmx.F_CreateTIme(当月)

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

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

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

-- 查看已完成目标的门店(当月)
SELECT * FROM v_store_performance_simple WHERE completion_rate >= 100;

-- 查看零业绩的门店(当月)
SELECT * FROM v_store_performance_simple WHERE actual_performance = 0;

-- 按完成率排名(当月)
SELECT * FROM v_store_performance_simple WHERE target_performance > 0 ORDER BY completion_rate DESC;

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

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