查询篇-按收取学费的比例给老师发工资
2013年07月30日 09:03
点击率:11100
|
之前的文章讲过老师薪金计算的三种基本方法: http://www.mtcnsoft.com/docshow_c21_158.aspx其中第三种“按上课学员实际消耗的课时产出计算老师提成。”精度非常高,消耗资源大,并且要特殊配置。今天我们讲的也是第三种,但是参数选择不同所以实现起来比较简单。单价参考的是学员最后一次交费时的课时单价,可以满足大部分学校的需求。 主查询: Select LessonDegree.TeacherID as 工号, Users.TrueName as 姓名, sum(Attend.Lessons * (BillItem.UnitPrice + BillItem.Favorable / BillItem.Amount)) as 金额, sum(Attend.Lessons * (BillItem.UnitPrice + BillItem.Favorable / BillItem.Amount)) * 0.2 as 提成金额, LessonDegree.TeacherID as ShowKey from Attend,LessonDegree,StuClass,BillItem,Users where Attend.LessonDegreeID = LessonDegree.LessonDegreeID and Attend.StuClassID = StuClass.StuClassID and StuClass.LastBillItemID = BillItem.BillItemID and LessonDegree.TeacherID = Users.UserID and LessonDegree.StartDate >= {@StartDate:开始日期} and LessonDegree.StartDate <= {@EndDate:结束日期} group by LessonDegree.TeacherID,Users.TrueName
子查询: Select StuClass.StudentID as 学号, StuClass.StudentName as 姓名, StuClass.ClassID as 班号, StuClass.ClassName as 班名, Attend.Lessons as 课时, BillItem.UnitPrice as 单价, LessonDegree.StartDate as 日期 from Attend,LessonDegree,StuClass,BillItem where Attend.LessonDegreeID = LessonDegree.LessonDegreeID and Attend.StuClassID = StuClass.StuClassID and StuClass.LastBillItemID = BillItem.BillItemID and Attend.Lessons > 0 and LessonDegree.StartDate >= {@StartDate} and LessonDegree.StartDate <= {@EndDate} and LessonDegree.TeacherID = {@ShowKey} 统计某段时间学员所上课时的价值有一定的难度,因为优惠的客观存在,并且某段时间内存在学员多次购买课时、并且单价不同的问题。上面这段代码选择的是学员最后一次购买课时的单价做为标准进行构造的, StuClass.LastBillItemID = BillItem.BillItemID 从这句条件语法可以看出来。 (BillItem.UnitPrice + BillItem.Favorable / BillItem.Amount)这段代码用于计算课时实际单价(去除优惠后),因为优惠金额在系统里一直使用负数表达,所以这里用原单价+优惠单价=实际单价。 sum(Attend.Lessons * (BillItem.UnitPrice + BillItem.Favorable / BillItem.Amount))这段代码表示学员上课课时数 X 最后一次购买课时的单价 = 实际课时产值。 sum(Attend.Lessons * (BillItem.UnitPrice + BillItem.Favorable / BillItem.Amount)) * 0.2 as 提成金额,这段代码表示课时产出的20%用于老师的提成。根据学校的实际情况修改这里的0.2来调节提成比例。 (把以上代码粘贴到《麦田培训学校管理软件》查询管理里,可直接使用)
|