java人员安排表_javav 的日志-根据部门表和人员表,完成如下查询

建表sql:

-- ----------------------------

-- Table structure for sg_dept

-- ----------------------------

DROP TABLE IF EXISTS `sg_dept`;

CREATE TABLE `sg_dept` (

`deptno` int(11) NOT NULL,

`dname` varchar(50) DEFAULT NULL,

`loc` varchar(50) DEFAULT NULL,

PRIMARY KEY (`deptno`)

);

-- ----------------------------

-- Records of sg_dept

-- ----------------------------

INSERT INTO `sg_dept` VALUES ('10', '教研部', '北京');

INSERT INTO `sg_dept` VALUES ('20', '学工部', '上海');

INSERT INTO `sg_dept` VALUES ('30', '销售部', '广州');

INSERT INTO `sg_dept` VALUES ('40', '财务部', '武汉');

-- ----------------------------

-- Table structure for sg_emp

-- ----------------------------

DROP TABLE IF EXISTS `sg_emp`;

CREATE TABLE `sg_emp` (

`empno` int(11) NOT NULL,

`ename` varchar(50) DEFAULT NULL,

`job` varchar(50) DEFAULT NULL,

`mgr` int(11) DEFAULT NULL,

`hiredate` date DEFAULT NULL,

`sal` decimal(7,2) DEFAULT NULL,

`COMM` decimal(7,2) DEFAULT NULL,

`deptno` int(11) DEFAULT NULL,

PRIMARY KEY (`empno`),

KEY `fk_emp` (`mgr`),

CONSTRAINT `fk_emp` FOREIGN KEY (`mgr`) REFERENCES `sg_emp` (`empno`)

);

-- ----------------------------

-- Records of emp

-- ----------------------------

INSERT INTO `sg_emp` VALUES ('1009', '董先生', '董事长', null, '2001-11-17', '50000.00', null, '10');

INSERT INTO `sg_emp` VALUES ('1004', '刘备', '经理', '1009', '2001-04-02', '29750.00', null, '20');

INSERT INTO `sg_emp` VALUES ('1008', '诸葛亮', '分析师', '1004', '2007-04-19', '30000.00', null, '20');

INSERT INTO `sg_emp` VALUES ('1013', '庞统', '分析师', '1004', '2001-12-03', '30000.00', null, '20');

INSERT INTO `sg_emp` VALUES ('1001', '甘宁', '文员', '1013', '2000-12-17', '8000.00', null, '20');

INSERT INTO `sg_emp` VALUES ('1006', '关羽', '经理', '1009', '2001-05-01', '28500.00', null, '30');

INSERT INTO `sg_emp` VALUES ('1002', '黛绮丝', '销售员', '1006', '2001-02-20', '16000.00', '3000.00', '30');

INSERT INTO `sg_emp` VALUES ('1003', '殷天正', '销售员', '1006', '2001-02-22', '12500.00', '5000.00', '30');

INSERT INTO `sg_emp` VALUES ('1005', '谢逊', '销售员', '1006', '2001-09-28', '12500.00', '14000.00', '30');

INSERT INTO `sg_emp` VALUES ('1007', '张飞', '经理', '1009', '2001-09-01', '24500.00', null, '10');

INSERT INTO `sg_emp` VALUES ('1010', '韦一笑', '销售员', '1006', '2001-09-08', '15000.00', '0.00', '30');

INSERT INTO `sg_emp` VALUES ('1011', '周泰', '文员', '1008', '2007-05-23', '11000.00', null, '20');

INSERT INTO `sg_emp` VALUES ('1012', '程普', '文员', '1006', '2001-12-03', '9500.00', null, '30');

INSERT INTO `sg_emp` VALUES ('1014', '黄盖', '文员', '1007', '2002-01-23', '13000.00', null, '10');

问题:

列出薪金比关羽高的所有员工

列出所有员工的姓名及其直接上级的姓名

列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称

列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门

列出所有文员的姓名及其部门名称,部门的人数

-- 1.列出薪金比关羽高的所有员工

select ename

from sg_emp

where  sal>(select  sal from sg_emp  where sg_emp.ename='关羽')

-- 2. 列出所有员工的姓名及其直接上级的姓名

select t1.empno,t1.ename,t1.mgr,t2.ename

from sg_emp t1 left join  sg_emp t2 on t1.mgr=t2.empno

-- 3. 列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称

select * from(select t1.empno,t1.ename,t1.hiredate,t2.ename 上级,t2.hiredate 上级入职时间,t1.deptno

from sg_emp t1  left join sg_emp t2 on t1.mgr=t2.empno

where t1.hiredate

where a.deptno=b.deptno

-- 4. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门

SELECT t2.dname,t2.deptno,count(t1.ename)

from sg_emp t1  right join sg_dept t2 on t1.deptno=t2.deptno

GROUP BY t2.deptno

-- 5. 列出所有文员的姓名及其部门名称,部门的人数

select a.*,b.c

from

(select *from sg_emp t1 where t1.job='文员') a,

(select t2.dname,t2.deptno,count(t1.ename)c from  sg_emp t1 right join sg_dept t2 on t1.deptno=t2.deptno GROUP BY t2.deptno)b

where a.deptno=b.deptno

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值