【发布时间】:2021-04-02 18:11:14
【问题描述】:
我有一个时间跟踪数据库,我试图从中获取按工人姓名和工作周分组的每周总工作时间列表。
这是我返回所有必要数据的查询:
SELECT [Timesheet Period], [Employee Name], SUM([Hours]) AS Hours FROM timetracker
WHERE [Date Worked] BETWEEN '2020-12-06' AND '2020-12-26'
AND [Hours] > 0
AND [Mgr Name] <> ''
GROUP BY [Employee Name], [Timesheet Period]
我希望数据像这样排序:
| Timesheet Period | Employee Name | Hours |
--------------------------------------------------------------
| 12/06/20 - 12/12/20 | Joe Smith | 70 |
--------------------------------------------------------------
| 12/13/20 - 12/19/20 | Joe Smith | 46 |
--------------------------------------------------------------
| 12/20/20 - 12/26/20 | Joe Smith | 42 |
--------------------------------------------------------------
| 12/06/20 - 12/12/20 | Robin Williams | 40 |
--------------------------------------------------------------
| 12/13/20 - 12/19/20 | Robin Williams | 40 |
--------------------------------------------------------------
| 12/20/20 - 12/26/20 | Robin Williams | 40 |
--------------------------------------------------------------
| 12/13/20 - 12/19/20 | Jane Doe | 43 |
--------------------------------------------------------------
| 12/20/20 - 12/26/20 | Jane Doe | 54 |
--------------------------------------------------------------
| 12/06/20 - 12/12/20 | Keanu Reeves | 45 |
--------------------------------------------------------------
| 12/13/20 - 12/19/20 | Keanu Reeves | 42 |
--------------------------------------------------------------
| 12/06/20 - 12/12/20 | Derek Zoolander | 40 |
--------------------------------------------------------------
| 12/13/20 - 12/19/20 | Derek Zoolander | 40 |
--------------------------------------------------------------
因此,员工按给定时间范围内的最高总小时数降序排序,但他们的工作时间也按其姓名分组,并按他们在给定时间范围内的工作周数升序排序。
我不确定这是否可行,但我想我可以以某种方式对每个名称进行 SUM(Hours) 并排序,然后使用该结果来按顺序排列周数。欢迎任何想法:)
【问题讨论】:
标签: sql sql-server database sql-order-by