首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出数据计算

导出数据计算
EN

Stack Overflow用户
提问于 2017-07-08 03:26:44
回答 1查看 35关注 0票数 1

我希望使用派生数据来获得根据处理的约会计算的总薪资(每个20英镑),基本工资是1000英镑。此外,工资应按月和年排序。

任用表有约会日期和时间,员工表有WorkerID和WorkerName,工资有salaryID、任用人员和约会费用(20英镑)。我想按每月1000英镑的基本工资和其他费用(指定的* 20)按日期计算工资总额。我对按日期订购有问题。

预约表

代码语言:javascript
复制
AppointmenID |AppointmentDate  | MechanicID
:----- | -----:     | :----:
AI1   | 2017-01-01  | MI1
AI2   | 2017-01-15  | MI2
AI3   | 2017-02-01  | MI1

薪金表

代码语言:javascript
复制
SalaryID | Salary  | AppointmentCost
:----- | -----:     | :----:
1      | 1000       | 20

预约表

代码语言:javascript
复制
AppointmenID |AppointmentDate  | MechanicID
:----- | -----:     | :----:
AI1   | 2017-01-01  | MI1
AI2   | 2017-01-15  | MI2
AI3   | 2017-02-01  | MI1
AI4   | 2017-01-25  | MI2

机械工作台

代码语言:javascript
复制
MechanicID |MechanicName| SalaryID
:----- | -----:     | :----:
MI1   | Rooney      | 1
MI2   | Stephan     | 1
MI3   | Ronaldo     | 1

预期产出

1月份薪金

代码语言:javascript
复制
AppointmentDate  | MechanicID | MechanicName | Salary| AppointmentCost| Appointment Handled | Salary
:----- |      -----: | :----:   | ----:| :----:|:--|:-----|
2017-01-01  | MI1    | Rooney   | 1000   | 20    |1  | 1020
2017-01-15  | MI2    | Stephan  | 1000   | 20    |2  | 1040

2月份薪金

代码语言:javascript
复制
AppointmentDate  | MechanicID | MechanicName | Salary| AppointmentCost| Appointment Handled | Salary
:-----      | -----:     | :----:  |:----- | -----:| :----:  |:-----
2017-01-01  | MI1  |      Rooney   | MI1   | 1000  | 20      |1      | 1020

有人能帮我吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-08 04:31:17

您需要Join's和下面的表达式来计算机械师的工资

代码语言:javascript
复制
salary + ( count of appointmenthandled * appointmentcost )

就像这样

代码语言:javascript
复制
SELECT A.appointmentdate, 
       M.mechanicid, 
       M.mechanicname, 
       S.salary, 
       S.appointmentcost, 
       A.appointmenthandled, 
       salary = S.salary + ( A.appointmenthandled * S.appointmentcost ) 
FROM   mechanic M 
       INNER JOIN salary S 
               ON M.salaryid = S.salaryid 
       INNER JOIN (SELECT mechanicid, 
                          AppointmentHandled = Count(*), 
                          AppointmentDate =Min(appointmentdate) 
                   FROM   appointment A 
                   --Where month(AppointmentDate) = 1 
                   GROUP  BY mechanicid, 
                             Month(appointmentdate)) A 
               ON M.mechanicid = A.mechanicid 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44982188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档