SQL查询中内部/左/右连接的SUM

时间:2016-02-09 12:29:49

标签: mysql join

我的mySQl数据库上有三个表:

员工

ID int
Name
Surname

DayOffRequest

ID int (PK)
EmployeeID FK references Employee
HowManyDays double

等级

ID int (PK)
EmployeeID FK references Employee
daysEmployeeCanGet double

每位员工都有自己的排名,每年可以获得多少休假。例如,在第一年,他总共可以获得14天。他们的日子由DaysOffRequest举行。

我想在一个查询中获取 UserID,RankID,SUM(HowManyDays),SUM(daysEmplooyeeCanGet)

我用过

SELECT 
    e.id, r.id,
    SUM(r.daysEmployeeCanGet),
    SUM(HowManyDays) 
FROM 
    Employee e 
INNER JOIN 
    Rank r ON r.`userID` = e.`ID` 
INNER JOIN 
    DayOffRequest 

但它没有用。我的意思是它确实有效但不是想要的。

我实际上想要查询,例如每当员工休息一天时,它会自动减少他从他可以得到的总天数中获得的天数。(他可以获得的总天数是天数雇员可以获得每天的收入有。)

我如何实现这一目标?

我希望我足够清楚。

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试以下查询,但每个员工的Rank表中必须有一行,因为我使用了max。

SELECT u.id
       MAX(r.daysEmployeeCanGet) 'Allowed',
       SUM(HowManyDays) 'Availed',
       MAX(r.daysEmployeeCanGet) - SUM(HowManyDays) 'Remaining'
FROM User u
INNER JOIN Rank r ON r.EmployeeID=u.ID
INNER JOIN DayOffRequest dor ON u.ID = dor.EmployeeID
GROUP BY u.id