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