SQL求助,不知道用什么函数

SQL help, not sure of what function to use

所以这里我有一个 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 的新手!提前致谢!

您需要使用 GROUP BY。要分组的字段是 projectIdworkerId,然后是 select 时间总和

SELECT pw.project_id, pw.worker_id, w.worker_name, SUM(DATEDIFF(leavedate, joindate)) 'Time Worked in Days' 
FROM projectworker pw 
INNER JOIN worker w ON pw.worker_id=w.worker_id
GROUP BY pw.project_id, pw.worker_id, w.worker_name

你必须加总工作时间。结果将以工作时间最长的顺序排列。

SELECT pw.project_id, pw.worker_id, w.worker_name, 
       SUM(DATEDIFF(leavedate, joindate)) 'Time Worked in Days' 
FROM projectworker pw 
INNER JOIN worker w ON pw.worker_id=w.worker_id
group by pw.project_id, pw.worker_id, w.worker_name
order by SUM(DATEDIFF(leavedate, joindate)) desc