【发布时间】:2017-11-12 21:35:04
【问题描述】:
所以在这里我有一个 SQL 查询,我试图用它来查找在一个项目上工作时间最长的工人
SELECT pw.project_id, pw.worker_id, w.worker_name, DATEDIFF(leavedate, joindate) 'Time Worked in Days'
FROM projectworker pw
INNER JOIN worker w ON pw.worker_id=w.worker_id
当我运行查询时,我得到这个:
project_id worker_id workername Time Worked in Days
1 1 mx 9
1 1 mx 1087
1 2 red 740
1 3 fed 1522
2 5 meo 1847
2 12 bull 1462
4 3 fed 1126
4 6 mao 4018
4 7 polly 1858
4 3 fed 3318
5 8 max 365
5 9 drudge 731
5 10 max 33
5 12 bull 428
5 1 mx 793
正如您在项目 1 中看到的,工人 1 (mx) 工作了两次,一次工作 9 天,一次工作 1087 天。我想知道如何设置我的查询,以便他的名字只显示一次,并且它结合了他的工作时间(所以它显示 1096)。我尝试使用 SELECT DISTINCT 但这给了我一个错误。有什么建议么?对不起,如果这是一个微不足道的问题,我是 SQL 新手!提前谢谢!
【问题讨论】:
-
基本 SQL 聚合查询。查看
SUM和GROUP BY。