SQL帮助,不确定要使用什么函数

SQL帮助,不确定要使用什么函数,sql,distinct,duration,Sql,Distinct,Duration,所以这里我有一个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_

所以这里我有一个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中看到的,worker 1(mx)工作了两次,一次工作9天,一次工作1087天。我想知道如何设置我的查询,使他的名字只显示一次,并结合他的工作时间(因此显示1096)。我尝试使用SELECT DISTINCT,但这给了我一个错误。有什么建议吗?抱歉,如果这是一个微不足道的问题,我是SQL新手!提前谢谢你

您需要使用
分组依据
。要分组的字段是
projectId
workerId
,然后选择时间总和

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

基本SQL聚合查询。使用
分组依据查看
SUM