使用ER图的SQL查询实践

时间:2014-07-23 06:28:55

标签: sql

这个问题一直困扰着我的生活。考虑这个数字。

[Click here for Figure]

  1. 编写SQL语句,找出每个项目所有员工的平均时间。

  2. 编写SQL语句,列出员工编号为1251的员工参与任务的所有项目,但不包括管理员。

  3. 这就是我的......

    查询1:

    SELECT AVG(ASSIGN_HOURS) 
    FROM ASSIGNMENT a, PROJECT P 
    WHERE p.EMP_NUM=a.EMP_NUM;
    

    查询2:

    SELECT * 
    FROM PROJECT P, ASSIGNMENT A 
    WHERE P.EMP_NUM<>1251 
        AND A.EMP_NUM=1251; 
    

    请帮忙!

1 个答案:

答案 0 :(得分:1)

以下是可以解决您的目的的查询。

查询1

SELECT prj.proj_num
    ,asg.emp_num
    ,avg(asg.assign_hours)
FROM Project prj
INNER JOIN Assignment asg 
    ON prj.proj_num = asg.proj_num
GROUP BY prj.proj_num
    ,asg.emp_num

SQL FIDDLE FOR FIRST QUERY

查询2

SELECT prj.proj_num
      ,prj.proj_name
      ,asg.* 
FROM Project prj
INNER JOIN Assignment asg 
    ON prj.proj_num = asg.proj_num 
WHERE asg.emp_num = 1251 
    and prj.emp_num <> 1251 

SQL FIDDLE FOR SECOND QUERY

基于您的评论做出的假设 - 项目表中的emp_num列将具有经理emp_num。

注意:测试和工作