'Get date of max hours worked
Tables: Employee ( ID , Name ) EmployeeHours ( EmployeeID ,Date, Hours )
This is my requirement:
Write a sql for following results for a year EmployeeID , TotalHoursWorked , Date and Hours ( Date and Hours when Employee worked most )
I wrote the following query:
select e.id, e.name, sum(eh.hours) as totalHoursWorked, max(hours) hour
from shoplist.emp e, shoplist.empHours eh where e.id = eh.empId
group by eh.empId;
I am able to get id, name, totalHoursWorked with maxHour but I am a bit confused how to get the date of the max hours. Can someone help me with this?
Sample Data:
Emp Table
id, name
'1','akhil'
'2','preethi'
'3','gopi'
Emp Hours Table
id, empId, hours, date
'1','1','3','2022-05-12'
'2','1','5','2022-05-11'
'3','1','4','2022-05-10'
'4','2','2','2022-05-12'
'5','2','4','2022-05-10'
'6','3','3','2022-05-09'
'7','3','5','2022-05-08'
Expected
id, name, totalHoursWorked, maxHours, maxHourDate
'1','akhil','12','5','2022-05-12'
'2','preethi','6','4','2022-05-12'
'3','gopi','8','5','2022-05-09'
Solution 1:[1]
you could use you query result in join with the original table
select distinct eh1.empId, eh1.date, t.hours, t.name, t.totalHoursWorked
from shoplist.empHours eh1 inner join (
select e.id, e.name, sum(eh.hours) as totalHoursWorked, max(eh.hours) hours
from shoplist.emp e
inner join shoplist.empHours eh on e.id = eh.empId group by eh.empId
) t on t.id = eh1.empId AND t.hours = eh1.hours
for the same use with several dates with the same numbers of hours you couldselect the max or the minn this way
select eh1.empId, max(eh1.date), t.hours, t.name, t.totalHoursWorked
from shoplist.empHours eh1 inner join (
select e.id, e.name, sum(eh.hours) as totalHoursWorked, max(eh.hours) hours
from shoplist.emp e
inner join shoplist.empHours eh on e.id = eh.empId group by eh.empId
) t on t.id = eh1.empId AND t.hours = eh1.hours
group by eh1.empId
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 |