SQL复杂查询(子查询)

USE STUDY
SELECT * from EMP
SELECT * FROM SALGRADE 

--1.查询雇员姓名,所在部门编号和名称

SELECT ename,EMP.deptno,DEPT.deptno FROM EMP INNER JOIN DEPT ON DEPT.deptno =EMP.deptno

--2.查询雇员姓名,工作,领导的姓名

SELECT e1.ename,e1.job,e2.ename FROM EMP e1 INNER JOIN EMP e2 on e1.mgr=e2.empno 

--3.查询雇员姓名,工作,领导姓名及部门名称

SELECT e1.ename,e1.job,e2.ename,DEPT.dname FROM DEPT , EMP e1 INNER JOIN EMP e2 ON e1.mgr=e2.empno WHERE DEPT.deptno =e1.deptno

--4.查询雇员姓名,工作,工资及工资等级

SELECT ename,job ,sal,SALGRADE.grade FROM EMP left JOIN SALGRADE ON sal BETWEEN losal AND hisal 

--5.查询雇员姓名,工作,工资及工资等级,要求工资等级显示为
--A B C D E

SELECT EMP.ename,EMP.job,EMP.sal,
CASE SALGRADE.grade
WHEN ‘1‘ THEN ‘E‘
WHEN ‘2‘ THEN ‘D‘
WHEN ‘3‘ THEN ‘C‘
WHEN ‘4‘ THEN ‘B‘
WHEN ‘5‘ THEN ‘A‘
END AS grade
FROM EMP left join SALGRADE on EMP.sal BETWEEN losal AND hisal 

--6.查询雇员姓名,工作,领导的姓名 (左连接 =(+) :以左表为主)

SELECT e1.ename,e1.job,e2.ename FROM EMP e1 LEFT JOIN EMP e2 on e1.mgr=e2.empno

--7.查询雇员姓名,年薪,按年薪从高到低排序

SELECT ename,sal*12 years FROM EMP ORDER BY years DESC 

--8.查询每个部门中工资最高的雇员姓名,工作,工资,部门名称,最后按工资从高到低排序

--SELECT ename,job,sal,DEPT.dname FROM DEPT ,EMP where sal ORDER BY empno
select a.* from emp a,(select deptno,max(sal) sal from emp group by deptno )b where a.deptno=b.deptno and a.sal=b.sal

--9.查询每个部门的雇员数量

SELECT deptno,count(*) from EMP GROUP BY deptno

--10.求出每个部门的平均工资

SELECT deptno ,avg (sal) FROM EMP GROUP BY deptno 

--11.按部门分组,并显示部门的名称,以及每个部门的员工数

SELECT count(*)FROM EMP GROUP BY deptno 

--12.要求显示平均工资大于2000的部门编号和平均工资

SELECT deptno,avg(sal)FROM EMP GROUP BY deptno HAVING avg(sal)>2000 

--13.显示非销售人员工作名称以及从事同一工作雇员的月工资的总和,并且要满足从事同一工作的雇员
--的月工资大于$1500,输出结果按月工资的合计升序排列

SELECT job,sum(sal) FROM EMP WHERE sal>1500 and job <>‘Salesman‘ GROUP BY job ORDER BY sum(sal) 

--14.求出平均工资最高的部门

select top 1 avg(sal),deptno from emp group by deptno ORDER BY avg(sal) DESC 

--15.要求查询出比7654工资要高的全部雇员的信息

select * from EMP WHERE sal>(SELECT sal FROM EMP where empno=7654)

--要求查询工资比7654高,与7788从事相同工作的全部雇员信息

select * from EMP WHERE sal>(SELECT sal FROM EMP where empno=7654)AND
job =(SELECT job FROM EMP WHERE empno =7788)

--16.查询出工资最低的雇员姓名,工作,工资

SELECT ename,job,sal FROM EMP WHERE sal =(SELECT min(sal)FROM EMP)

SQL复杂查询(子查询)

时间: 2024-10-03 13:46:39

SQL复杂查询(子查询)的相关文章

sql example 9 -- 子查询

sql example 9 – 子查询 sql example 9 – 子查询 数据库准备 create table student ( id int auto_increment primary key, name varchar(10) ); create table scores ( id int auto_increment PRIMARY key, score int default 0, foreign key (id) references student(id) on delet

SQL 基础之子查询(十一)

子查询:类型.语法.和注意事项 使用子查询能解决哪些问题? 子查询语法: select select_list from table where expr operator (select select_list from table); 子查询(内查询)在主查询(外查询)之前执行. 主查询使用子查询结果. 位置:select,where,from,having 1.查询谁的工资比Abel高 select last_name, salary from employees where salary

数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引

1.    oracle介绍 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一.比如SilverStream就是基于数据库的一种中间件.ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能:作为一个关系数据库,它是一个完备关系的产品:作为分布式数据库它实现了分布式处理功能.但它的所有知识,只要在一种机型上学习

单表查询: where group by 分组 having distinct 去重 order by 排序 limit 多表查询 子查询 连表查询

今日内容 表查询 单表查询: where group by 分组 having distinct 去重 order by 排序 limit 多表查询 子查询 连表查询 单表查询 前期表准备 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex enum('male','female') not null default 'male', #大部分是男的 age int(3) u

mybatis 嵌套查询子查询column传多个参数描述

mybatis 嵌套查询子查询column传多个参数如下: 1.图解 2.代码示例 备注:注意,相同颜色的单词都是有关联的. <resultMap id="blogResult" type="Blog"> <association property="author" column="{id=author_id,likename=author_name}" javaType="Author"

coding++:mybatis 嵌套查询子查询column传多个参数描述

mybatis 嵌套查询子查询column传多个参数如下: 2.代码示例 备注:注意,相同颜色的单词都是有关联的 <resultMap id="blogResult" type="Blog"> <association property="author" column="{id=author_id,likename=author_name}" javaType="Author" selec

关系数据库SQL之基本数据查询:子查询、分组查询、模糊查询

http://www.jianshu.com/p/eeb6a898d4ec 前言 上一篇关系数据库常用SQL语句语法大全主要是关系型数据库大体结构,本文细说一下关系型数据库查询的SQL语法. SQL数据查询 语法回顾 SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]- FROM <表名或视图名>[,<表名或视图名>]- [WHERE <条件表达式>] [GROUP BY <列名> [HAVING &l

SQL练习 高级子查询

• 书写多列子查询• 在 FROM 子句中使用子查询• 在SQL中使用单列子查询• 书写相关子查询• 使用 EXISTS 和 NOT EXISTS 操作符• 使用子查询更新和删除数据• 使用 WITH 子句 --多列子查询(不成对比较 & 成对比较)1. 查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_id, manager_id, department_id [方式一]SELECT employee_id, manager_id,

在SQL Server的子查询、视图、内联函数等数据库对象中,不应该单独使用ORDER BY语句

我们知道在SQL语句中,ORDER BY语句可以用来排序.但是在SQL Server中,如果我们在子查询.视图.内联函数等数据库对象中单独使用ORDER BY语句是不允许的,来看下面的SQL语句: SELECT * FROM ( SELECT [ID],[Code],[Name],[Age],[Sex],[Class] FROM [dbo].[Student] ORDER BY [ID] DESC ) AS T_Student 执行该语句,SQL Server会报错,错误信息如下: The OR