SQL练习(五)

http://www.cnblogs.com/huyong/archive/2011/06/27/2090980.html


/*
第五篇
*/
1. 哪些部门的人数比90 号部门的人数多。
select e.department_id from employee e where e.department_id in 
(select department_id from employee group by department_id having count(*)>
(select count(*) from employee where department_id='90'))

2. Den(FIRST_NAME)、Raphaely(LAST_NAME)的领导是谁(非关联子查询)。
select employee_name from employee where employee_id=(select manager_id from employee where first_name='Den' and last_name='Raphaely');

3. Den(FIRST_NAME)、Raphaely(LAST_NAME) 领导谁(非关联子查询)。
select employee_name from employee where manager_id=(select employee_id from employee where first_name='Den' and last_name='Raphaely');

4. Den(FIRST_NAME)、Raphaely(LAST_NAME) 的领导是谁(关联子查询)。
select e1.employee_name from employee e1 where EXISTS
(select 1 from employee e2 where e2.manager_id = e1.employee_id and e2.first_name='Den' and e2.last_name='Raphaely' )

5. Den(FIRST_NAME)、Raphaely(LAST_NAME) 领导谁(关联子查询)。
select e1.employee_name from employee e1 where EXISTS
(select 1 from employee e2 where e2.employee_id = e1.manager_id and e2.first_name='Den' and e2.last_name='Raphaely' )

6. 列出在同一部门共事,入职日期晚但工资高于其他同事的员工:名字、工资、入职日期
(关联子查询)。
select e.ename,e.salery,e.hiredate from employee e where EXISTS
(SELECT 1 FROM employee e1, employee e2 where e1.department_id = e2.department_id and e1.hiredate>e2.hiredate and e1.salery>e2.salery);

7. 哪些员工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一个部门(非关联子查询)。
select e.* from employee e where  e.department_id != (select e2.department_id from employee e2 where e2.first_name = 'Den' and e2.last_name='Raphaely');

8. 哪些员工跟Den(FIRST_NAME)、Raphaely(LAST_NAME)不在同一个部门(关联子查询)。
select e1.* from employee e1where NOT EXISTS
(select 1 from employee e2 where e1.department_id = e2.department_id and e2.first_name = 'Den' and e2.last_name='Raphaely') ;

9.  Finance部门有哪些职位(非关联子查询)。
select job_id from employee where department_id=(select department_id from department where department_name='Finance');

10. Finance部门有哪些职位(关联子查询)。
select distinct job_id from employee e where EXISTS 
(select 1 from department d d.department_name = 'Finance' and d.department_id = e.department_id);

EXISTS用法:就是判断后面的语句是否存在,如果不存在就啥都不返回。还有NOT EXISTS用法,与之相反。

select 1 的用法就是,如果后面条件都符合则返回1。一般这两个用法都会在一起连用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值