sql习题练习
表结构: create database MyCompany go use MyCompany go create table Departments ( Department_ID ,) primary key, Department_Name ), ) go create table Employees ( Employee_Id ,) primary key, Employee_Name ), Employee_Job ), Salary money, Department_Id int foreign key references Departments(Department_ID) ) Go --------------------------------------------插入数据---------------------------------------------------------------------------------- ----------------------------------部门表------------------------------------------------------------------- SET IDENTITY_INSERT departments ON , N'财务部' ) , N'行政部' ) , N'开发部' ) , N'市场部' ) SET IDENTITY_INSERT departments OFF ------------------------=============================员工表================================================================================================ , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) , N ) SET IDENTITY_INSERT employees OFF
上面是创建表和数据库的代码
use MyCompanyTest go select * from dbo.Departments select * from Employees --1.列出EMPLOYEES表中各部门的:部门编号,最高工资, select e.department_Id 部门编号, MAX(e.Salary) 最高工资,MIN(e.salary)最低工资 from Employees e group by e.department_Id --2.列出EMPLOYEES表中各部门的:部门编号、部门名称、最高工资、最低工资 select 部门编号, 最高工资,最低工资 ,d.Department_Name from (select e.Department_ID 部门编号, max(e.Salary)最高工资,min(e.Salary)最低工资 from Employees e group by e.Department_Id )as t join Departments d on t.部门编号=d.Department_ID --3.列出EMPLOYEES表中各部门中'职员'(Employee_job为'职员')的:最低工资,最高工资和部门Id select min(Salary)最低工资,MAX(Salary) 最高工资,Department_Id 部门Id from Employees where Employee_Job='职员' group by Department_Id --4.对于EMPLOYEES中最低工资小于1000的部门,列出EMPLOYEE_JOB为'职员'的:部门编号,最低工资,最高工资 select * from( select Department_Id,MIN(e.Salary)最低工资,MAX(e.Salary)最高工资 from Employees e where e.Employee_Job='职员' group by e.Department_Id) as t join Departments d on d.Department_ID =t.Department_Id --5.根据部门编号由高到低,工资由低到高,列出每个员工的姓名,部门号,工资 select * from Employees order by Department_Id desc , Salary asc --6.列出'吴用'所在部门中每个员工的姓名与部门号 select * from Employees where Department_Id in ( select Department_Id from Employees where Employee_Name='吴用' ) --7.列出每个员工的姓名,头衔,部门号,部门名 select e.Employee_Name,e.Employee_Job,d.Department_ID,d.Department_Name from Employees e join Departments d on e.Department_Id=d.Department_ID --8.列出EMPLOYEES中头衔为'职员'的员工的姓名,工作,部门号,部门名 select * from Employees e join Departments d on e.Department_Id=d.Department_ID where e.Employee_Job='职员' --9.对于DEPARTMENTS表中,列出所有(说明是左联):部门名称,部门编号,以及该部门的:员工姓名与头衔 select * from Departments d left join Employees e on d.Department_ID=e.Department_Id --10.列出工资高于本部门工资平均水平的员工的部门编号,姓名,工资,并且按部门编号排序。 select * from Employees e join( select Department_Id, AVG(Salary)as 平均工资 from Employees e group by e.Department_Id)as t --求出各个部门的平均工资 on e.Department_Id=t.Department_Id where e.Salary > t.平均工资 order by e.Department_Id ---相关子查询 select * from employees as emp where exists( select department_id,avg(salary) as avg_salary from employees as emp_sub group by department_id having emp_sub.department_id=emp.department_id and emp.salary>avg(salary) ) ---- select * from EMPLOYEES as e where e.SALARY >(select avg(SALARY) from EMPLOYEES as b where e.DEPARTMENT_ID = b.DEPARTMENT_ID) order by e.DEPARTMENT_ID --11.对于EMPLOYEES,列出各个部门中工资高于本部门平均水平的员工 数和部门号,按部门号排序 select emp.department_id as 部门编号, count(*) as 员工数 from Employees as emp where emp.salary > (select avg(salary) from employees emp_sub where emp_sub.department_id=emp.department_id) group by emp.department_id order by emp.department_id --12.请找出部门中具有2人以上,员工工资大于所在部门平均工资的:部门的id与这些人的人数。 --分解: --1>.部门中有人的工资比部门的平均工资还高 --2>并且这些人在2人以上 --3>查询出这些部门Id,与工资高于部门平均工资的人的人数。 select emp.department_id as 部门编号, count(*) as 员工数 from Employees as emp where emp.salary > (select avg(salary) from employees emp_sub where emp_sub.department_id=emp.department_id) group by emp.department_id order by emp.department_id --13.对于EMPLOYEES中低于自己工资至少5人的员工,列出其部门号,姓名,工资, --以及工资少于自己的人数 select employee_name 姓名, salary 工资, 小于自己工资的人数=(select count(*) from employees as emp_sub where emp_sub.salary<emp.salary) from employees as emp
sql习题练习的更多相关文章
- sql习题及答案
sql习题:http://www.cnblogs.com/wupeiqi/articles/5729934.html 习题答案参考:https://www.cnblogs.com/wupeiqi/ar ...
- sql习题--转换(LEFT/RIGTH)
/* 转换为100-5 0100-000051-998 0001-0099812-1589 0012-01589*/IF EXISTS(SELECT * FROM sys.objects WHERE ...
- SQL简单语句总结习题
创建一个表记员工个人信息: --创建一个表 create table plspl_company_info( empno ) not null, ename ) not null, job ), ma ...
- 我认为测试应该掌握的SQL语句
最近在学习Oracle,对测试人员而言必须掌握两种语言:第一种是DML,数据操纵语言 (Data Manipulation Language) 是SQL语言中,负责对数据库对象运行数据访问工作的指令集 ...
- 资料整理,SQL Server ,面试前复习笔记
T-SQL 要掌握的知识点分类 SQL 面向数据库执行查询 SQL 从数据库取回数据 SQL 在数据库中插入新的记录 SQL 更新数据库中的数据 SQL 从数据库删除记录 SQL 创建新数据库 SQL ...
- 推荐《SQL基础教程(第2版)》中文PDF+源代码+习题答案
我认为<SQL基础教程(第2版)>非常适合数据库学习的初学者.论述的角度是读者的角度,会换位思考到读者在看到这一段时候会发出怎样的疑问,非常难得:原始数据的例题只有一道,但是可以反复从不同 ...
- SQL Server(四)——查询练习(45道习题)
题目:设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher). 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1 ...
- Server SQL 2008 习题
[序言:学期末了,整理了自己这个学期学习数据库做的练习题,也是让自己复习了一遍.有错误的话希望大佬能够批评指正,不胜感激] 一.修改数据库 (1)给db_temp数据库添加一个数据文件文件db_tem ...
- SQL Server(四)——查询练习(45道习题)转
题目:设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher). 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1 ...
随机推荐
- mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)
这配置已经优化的不错了,如果你的mysql没有什么特殊情况的话,可以直接使用该配置参数 MYSQL服务器my.cnf配置文档详解硬件:内存16G [client]port = 3306socket = ...
- JMM内存模型+volatile+synchronized+lock
硬件内存模型: Java内存模型: 每个线程都有一个工作内存,线程只可以修改自己工作内存中的数据,然后再同步回主内存,主内存由多个内存共享. 下面 8 个操作都是原子的,不可再分的: 1) lock ...
- android的百度地图开发(二) 定位
参考:http://blog.csdn.net/mr_wzc/article/details/51590485 第一步,初始化LocationClient类 //获取地图控件引用 mMapView = ...
- tkinter 表格
import tkinter from tkinter import ttk root = tkinter.Tk() tree = ttk.Treeview(root, show="head ...
- Java程序执行时间
第一种是以毫秒为单位计算的. Java代码 //伪代码 long startTime=System.currentTimeMillis(); //获取开始时间 doSomeThing(); ...
- FTP-Filezilla首次配置
最新新弄了个服务器,先吐槽下,之前买镜像都是免费的,昨天试了,竟然收费.... 好吧,用户多了也正常. 代码发布之前都是很暴力的直接远程桌面然后粘贴,有个合作伙伴突然需要FTP,说之前用的就是,我就做 ...
- Ubuntu安装java环境
Ubuntu安装java环境 1.添加ppa sudo add-apt-repository ppa:webupd8team/java sudo apt-get update 2.安装oracle-j ...
- 818D - Multicolored Cars
818D - Multicolored Cars 题意 在 1 到 n 时刻,有 n 量有颜色的车通过,用数字表示颜色,Alice 选择一个颜色A,要求 Bob 选择一个颜色B,使得对于任意时刻 cn ...
- 树链剖分【p1505】[国家集训队]旅游
Description Ray 乐忠于旅游,这次他来到了T 城.T 城是一个水上城市,一共有 N 个景点,有些景点之间会用一座桥连接.为了方便游客到达每个景点但又为了节约成本,T 城的任意两个景点之间 ...
- 10.9 顾z校内互坑题
T1 (help) 题意简述 给定一个长度为\(n\)的序列.然后给出多组询问. 询问\([l,r]\)区间内不等于该段区间\(gcd\)的数的个数. 分析 看到区间问题,优先考虑线段树 or 树状数 ...