📅  最后修改于: 2023-12-03 15:28:46.098000             🧑  作者: Mango
一个数据库中有五个表,分别为:Employee,Department,Section,Project,Works_On。
现在你需要写一个 SQL 查询语句,返回所有在名称为“ScienceCentre”的项目中工作的员工的名字和他们总工时,需要按总工时的降序排列。
首先,我们需要使用 INNER JOIN 操作来获取 Works_On 和 Employee 表中的信息。然后,使用一个子查询来获取名称为“ScienceCentre”的项目 id,最后使用 GROUP BY 和 SUM 函数来计算每个员工在该项目中的总工时,并按总工时的降序排列。
以下是 SQL 查询语句的代码示例:
SELECT Employee.name, SUM(Works_On.hours) AS total_hours
FROM Works_On
INNER JOIN Employee ON Works_On.emp_id = Employee.id
WHERE Works_On.project_id = (SELECT id FROM Project WHERE name = 'ScienceCentre')
GROUP BY Employee.name
ORDER BY total_hours DESC;
首先,我们使用 INNER JOIN 操作将 Works_On 表和 Employee 表联接起来,根据员工 id 联接。这样,我们就可以获取 Works_On 表和 Employee 表中的员工信息。
INNER JOIN Employee ON Works_On.emp_id = Employee.id
接下来,我们使用 WHERE 子句来过滤只有在名称为“ScienceCentre”的项目中工作的员工,并使用子查询来获取该项目的 id。
WHERE Works_On.project_id = (SELECT id FROM Project WHERE name = 'ScienceCentre')
最后,我们使用 GROUP BY 和 SUM 函数计算每个员工在该项目中的总工时,并按总工时的降序排列。
GROUP BY Employee.name
ORDER BY total_hours DESC;
本文介绍了如何使用 SQL 查询语句来获取在名称为“ScienceCentre”的项目中工作的员工的名字和他们总工时。SQL 查询语句使用 INNER JOIN 操作和子查询来联接不同的表和获取信息,使用 GROUP BY 和 SUM 函数来计算员工的总工时并按总工时的降序排列。