求一企业级应用存储过程,超有挑战性,只有三个表,字段极少!在线等
求一存储过程
输入参数:
01.fromDate char 起始日期,如:2007/02/01
02.toDate char 终止日期,如:2007/03/01
A表:休日表[只有一个字段]
存储单位所有的休息日
--------------------------
字段:
riqi Datetime 日期[主键]
B表:销售员表
存储单位所有销售员
--------------------------
字段:
gonghao char(10) ID[主键]
name char(20) 姓名
haspart bit 是否有职务[1有职务]
C表:销售员访客表
存储销售员访客纪录
一个销售员在一天可以有多条纪录
--------------------------
字段:
visit_num char(10) 访客ID[主键]
dept char(10) 销售员部门
visit_date Datetime 访客日期
gonghao char(10) 销售员ID
求以下格式报表:
输入参数:
01.fromDate char 起始日期,如:2007/02/01
02.toDate char 终止日期,如:2007/03/01
返回:
每个部门的销售员数(过滤有职务的),在该时间段内的
应访客行程数(销售员数*有效天数)、实际访客数
定义:
1.销售员数
(过滤有职务的,即B表中的haspart=0部门销售员)
2.有效天数:
(2007/02/01到2007/03/01)总天数减掉
(2007/02/01到2007/03/01)之间的休日数(A表),
如果 day(toDate)= '20 ' and day(fromdate)= '21 '
并且 [month(toDate)-month(fromdate)= '1 ' OR
Month(ToDate) = "1 " And Month(FromDate) = "12 "]
时,还要多减一天
3.应访客行程数 = 销售员数*有效天数
4.实际访客数
该部门每个无职务的销售员实际的行程数的累加和
5.访客率=实际访客数/应访客行程数 * 100% [保留两位小数]
举例:
A部门有三个业务员,本月有效日为18天,该部门应访客行程数为3*18=54次
其中有一个业务员请2天假,导致C表中无该业务员在该两天的纪录,
则该部门实际访客次数=2*18+1*16=52次
背景:
理论上每个销售员 在每个有效日(fromDate到toDate日期减掉fromDate到toDate休日)
都要至少有一次访客纪录
// 按部门对C表分组
===========================================================
部门 销售员数 应访客行程数 实际访客数 访客率
-----------------------
A 3 36 30 83.33%
B 4 40 38 95.00%
===========================================================
------解决方案--------------------不对吧.....你怎么计算销售人员?
销售人员表与部门表没有联系.
B虽然有全体销售人员了.
例如: C里,在3月初某销售人员就请假没访客.一直到3月15号.
你查3-1 到 3-15 时, 某部门总销售人员其实就会比实际的少一人. 怎么办?
------解决方案--------------------销售员和时间段什么关系??
某个时间段以内,某个销售员没有访客,就认为这个销售员不存在吗??