标题:刚学数据库,遇到一道关于数据库sql语句的题目,实在不会,请高手帮忙解惑, ...
取消只看楼主
WF1120034357
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-3-24
结帖率:100%
已结贴  问题点数:20 回复次数:3 
刚学数据库,遇到一道关于数据库sql语句的题目,实在不会,请高手帮忙解惑,谢谢!
EMPLOYEE(ESSN,Ename,Sex,Salary,Dnumber),其中ESSN是主键, 存储员工的信息,包括社会保险号、姓名、工资、所属部门号
DEPARTMENT(Dnumber,Dname,MgrSSN) 其中Dnumber是主键,存储部门信息,包括部门编号、名称、经理社会保险号
PROJECT(Pnumber,Pname,Pcity) 其中Pnumber是主键,存储项目的信息,包括项目编号、名称、所在城市
WORKS_ON(Pnumber,ESSN,Wdate,Hours) 其中Pnumber、ESSN、Wdate是主键,存储某员工在某日为某项目工作的时间

请用SQL语句实现下面计算:
(1)求工资高于其所在部门平均工资的职工姓名
(2)求至少在三个不同项目中工作过的职工姓名
(3)建立视图DeptPro(Dnumber,Pnumber,Thours),表示每个部门的所有职工在每个项目中的工作总时数。并利用该视图,求在项目'Middleware'中工作时数最多的部门名称。
搜索更多相关主题的帖子: 数据库 社会保险 时间 姓名 
2011-03-24 14:03
WF1120034357
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-3-24
得分:0 
我自己搞定了
(1)SELECT Ename, Dnumber, Salary FROM EMPLOYEE
JOIN
(SELECT Dnumber, avg(Salary) AS Asalary FROM EMPLOYEE
GROUP BY Dnumber) A
ON Dnumber = A.Dnumber
WHERE Salary > A.Asalary
ORDER BY Dnumber
2011-03-24 23:17
WF1120034357
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-3-24
得分:0 
感谢png的回答。这道题是一道研究生入学考试数据库笔试题,是哪本书上的我也不清楚。
再请问一下上题中用‘关系代数’表示至少在两个位于南京的项目中工作过的职工社会保险号该如何写。
我写了一个,但是感觉很烦,不知道有没简化的。
我是先求出一个在南京工作的职工社会保险号的关系,然后把两个这样的关系进行乘积然后选择出社会保险号一样,项目号不一样的,再投影到社会保险号。
我想知道有没有简单点的写法。
2011-03-25 13:51
WF1120034357
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-3-24
得分:0 
有点问题 你参看一下4楼的回答
2011-03-27 23:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-334621-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.054633 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved