SQL执行顺序 经典 例题
来源:互联网 发布:java string length 编辑:程序博客网 时间:2024/06/06 19:09
已知表Create Table Department
( dept_id varchar(2) not null, -- 部门编号
dept_name varchar(20) not null, -- 部门名称
dept_leader varchar(10) –部门经理 );
Create Table Personnel
( id varchar(4) not null, --员工号
name varchar(10) not null, --姓名
dept_id varchar(2) not null, --部门编号
);
已知表:
Create Table Department
(
dept_id varchar(2) not null,
--
部门编号
dept_name varchar(20) not null, --
部门名称
dept_leader varchar(10)
–
部门经理
);
Create Table Personnel
(
id varchar(4) not null,
--
员工号
name varchar(10) not null, --
姓名
dept_id varchar(2) not null, --
部门编号
age integer, --
年龄
gzsj date, --
参加工作时间
technical_post varchar(10), --
职称
salary integer
–
薪水
);
已知表:
Create Table Department
(
dept_id varchar(2) not null,
--
部门编号
dept_name varchar(20) not null, --
部门名称
dept_leader varchar(10)
–
部门经理
);
Create Table Personnel
(
id varchar(4) not null,
--
员工号
name varchar(10) not null, --
姓名
dept_id varchar(2) not null, --
部门编号
age integer, --
年龄
gzsj date, --
参加工作时间
technical_post varchar(10), --
职称
salary integer
–
薪水
);
1 现在要查找人数排名前2位部门的经理及部门人数Select top 2 d.dept_leader, (select count(*) from Personnel p where p.dept_id = d.dept_id) '总人数'
from Department d, personnel p
group by d.dept_id, d.dept_leader
order by 总人数 desc -- order 后接列名(或用数字表示列名,此题中可以显示 order by 2 )
2 查找排名在第三位的部门领导名字及人数(注意用上一步的结果)
步骤1 首先找到各部门总的排名表
Select d.dept_leader, (select count(*) from Personnel p where p.dept_id = d.dept_id) '总人数'
from Department d,personnel p
group by d.dept_id,d.dept_leader order by 总人数 desc
步骤2 在总表中查找前两名的的部门编号(领导名字) (找一个字段作为桥梁,部门编号或领导名字)
select Y.dept_id
from(Select top 2 d.dept_leader,d.dept_id, (select count(*) from Personnel p where p.dept_id = d.dept_id) '总人数'
from Department d,personnel p
group by d.dept_id,d.dept_leader order by 总人数 desc)as Y --- from 后面是子查询 必须 另起一表名,否则报错。 (对应图中 not in 部分)
步骤3 找出排名第三的 部门编号和部门经理
select dept_id ,dept_leader from ( Select top 1 d.dept_leader,d.dept_id, (select count(*) from Personnel p where p.dept_id = d.dept_id) '总人数'
from Department d,personnel p
where d.dept_id not in ( select dept_id from ( Select top 2 d.dept_leader,d.dept_id, (select count(*) from Personnel p where p.dept_id = d.dept_id) '总人数'
from Department d,personnel p
group by d.dept_id,d.dept_leader order by 总人数 desc) as Z)
group by d.dept_id,d.dept_leader order by 总人数 desc) as Z
from (select * from ab )as X ------(select * from ab )当一张表,名字叫做X
- SQL执行顺序 经典 例题
- 经典SQL例题
- sql执行的顺序
- SQL语句执行顺序
- Oracle SQL 执行顺序
- sql 执行顺序
- sql 语句 执行顺序
- sql执行顺序
- sql执行顺序
- sql执行顺序
- sql执行顺序
- SQL执行顺序
- sql解释执行顺序
- sql执行顺序
- SQL语句执行顺序
- SQL语句执行顺序
- SQL 执行顺序
- sql语句执行顺序
- Windows下的Python环境搭建
- 如何提高低点击率的用户查询效果?
- UDP和IP的区别
- 树形结构的数据库表Schema设计
- 画菱形
- SQL执行顺序 经典 例题
- sp dp px之间的区别
- Launcher实现应用列表透明背景
- iOS基础控件-UITabBarController - 3 之<UITabBarControllerDelegate>协议中的四个重要方法
- Linux有名信号量的创建(sem_open中name参数构造)
- 第十周项目2--解密M$pszi$y
- Java EE HTML5 WebSocket 示例
- C++ 中 string 相加拼接的效率问题
- 设计模式学习(结构型模式)—适配器模式(Adapter)