2020-03-12

1.查询所有的部门编号:

select deptno
from emp

select deptno
from dept

2.查询所有有人的部门编号:

select  ename,deptno
from emp

3.查询所有岗位名称:

select job
from emp

4.查询所有薪水超过两千的员工信息

select *
from emp
where sal >2000

5.查询所有20部门的员工姓名,编号及薪水

select ename,empno,sal
from emp
where deptno = 20

6.查询所有没有奖金的员工信息

select * 
from emp
where comm is null or comm = 0

7.查询所有有奖金的员工信息

select *
from emp
where comm is not null and comm != 0

8.查询最高领导的员工信息

select *
from emp 
where mgr is null

9.查询所有81年之后入职的员工信息

select *
from emp 
where hiredate > '1981-12-31'

10.查询所有薪水在2000-4000范围内的员工信息

select *
from emp
where sal between 2000 and 4000

11.查询所有部门编号是10或30的员工信息

select *
from emp 
where deptno in (10,20)

12.查询所有20部门并且薪水超过2000的员工信息:

select *
from emp
where deptno = 20 and sal > 2000

13.查询所有薪水不在2000-4000范围内的员工信息

select *
from emp 
where sal <2000 or sal >4000

14.查询所有部门编号不是10,30的员工信息

select *
from emp 
where deptno not in (10,30)

15.查询用户名为scott的员工信息:注意区分大小写

select *
from emp
where binary ename = 'scott'

16.查询姓名里面包含ALL的员工姓名

select ename
from emp
where ename like '%ALL%'

17.查询所有以”S”开头的同学

select *
from emp
where ename like 'S%'

18.查询第二个字母为A的员工姓名

select ename
from emp
where ename like '_A%'

19.查询所有员工的编号、姓名、部门编号、职位、薪水,按照薪水降序排列

select empno,ename,deptno,job,sal
from emp 
order by sal desc

20.查询所有员工信息,按照部门降序排列,部门内按照薪水升序排列

select *
from emp
order by deptno desc,sal

21.查询姓名中包含‘A’员工的姓名,编号,薪水,按照薪水降序排列

select ename,empno,sal
from emp
where ename like '%A%'
order by sal desc

22.查询年收入超过10000的员工的姓名,编号,薪水,年收入,按照年收入降序排列

select ename,empno,sal,sal*12 yearsal
from emp 
where sal*12>10000
order by yearsal desc

23.查询年薪超过10000的员工的姓名,编号,薪水,年收入,按照年薪降序排列

select ename,empno,sal,sal*12 yearsal
from emp 
where sal*12>10000
order by yearsal desc

后续练习题:

24.查询雇员表中,姓名为SMITH的雇员,截止到今天共工作了多少周,则可以使用如下的SQL语句

select timestampdiff(week,hiredate,now())
from emp
where ename = 'SMITH'

25.查询各部门的最高薪水、最低薪水、平均薪水…..

select max(sal),min(sal),avg(sal)
from emp
group by deptno

26.查询‘SMITH’的领导姓名

select ename
from emp
where ename = (select mgr from emp where ename ='SMITH')

27.查询部门名称是‘SALES’的员工信息

select *
from emp
where deptno = (select deptno from dept where dname='SALES')

28.查询公司中薪水最高的员工信息

select *
from emp
where sal = (select max(sal) from emp)

29.查询公司所有员工的个数

select count(empno)
from emp

30.查询公司中最高薪水是多少

select max(sal)
from emp

31.查询公司中平均奖金是多少

select avg(ifnull(sal,0))
from emp

32.查询公司中最晚入职的时间

select max(hiredate)
from emp

33.查询公司中有奖金的人数.

select count(empno)
from emp
where comm is not null

34.查询20部门的最高薪水是多少.

select max(sal)
from emp 
where deptno = 20

35.查询各部门的平均薪水及部门编号,部门名称。

select deptno,dname,avg(sal)
from emp e join dept d
on e.deptno = d.deptno
group by deptno,dname

36.查询各部门中最高薪水的员工编号,姓名…

select empno,ename
from emp e
where sal = (select max(sal) from emp where deptno = e.deptno)

37.查询所有员工姓名中包含‘A’的最高薪水

select max(sal)
from emp
where ename like '%A%'

38.查询各岗位的最高薪水,最低薪水。要求只统计薪水>1000的

select max(sal), min(sal)
from emp
where sal > 1000
group by job

39.查询各部门的平均薪水及部门编号,要求只列出平均薪水>2000

select deptno,avg(sal) avgsal
from emp
group by deptno
having avgsal > 2000

40.查询各部门的平均薪水及部门编号,要求只有员工姓名中包含‘A’才参与统计,只列出平均薪水>1500的,按照平均薪水降序排列

select deptno,avg(sal) avgsal
from emp
where ename like '%A%'
GROUP BY deptno
having avgsal > 1500
order by avgsal desc

41.查询各部门最高薪水的员工信息

select *
from emp e
where sal =(select max(sal) from emp where deptno = e.deptno)

42.查询最高薪水的员工信息

select *
from emp e
where sal =(select max(sal) from emp where deptno = e.deptno)

43.查询薪水大于该部门平均薪水的员工信息

select *
from emp e 
where sal > (select avg(sal) from emp where deptno = e.deptno)

44.查询最高薪水的员工信息

select *
from emp e
where sal =(select max(sal) from emp where deptno = e.deptno)

45.查询各部门最高薪水的员工信息

select *
from emp e
where sal =(select max(sal) from emp where deptno = e.deptno)

46.查询‘SMITH’的领导姓名

select ename
from emp
where ename = (select mgr from emp where ename ='SMITH')

47.查询部门名称是‘SALES’的员工信息

select *
from emp
where deptno = (select deptno from dept where dname='SALES')

48.查询公司中薪水最高的员工信息

select *
from emp e
where sal =(select max(sal) from emp where deptno = e.deptno)

49.查询薪水等级为4的员工信息

select *
from emp e join salgrade s
on sal between losal and hisal
where grade = 4

50.查询领导者是‘BLAKE’的员工信息

select *
from emp 
where mgr = (select empno from emp where ename = 'BLAKE')

51.查询最高领导者的薪水等级

select grade
from emp e join salgrade s
on sal between losal and hisal
where mgr is null

52.查询薪水最低的员工信息

select *
from emp e
where sal =(select min(sal) from emp where deptno = e.deptno)

53.查询和SMITH工作相同的员工信息

select *
from emp
where job in (select job from emp where ename = 'SMITH' )

54.查询不是领导的员工信息

select *
from emp 
where empno not in (select mgr from emp) 

55.查询平均工资比10部门低的部门编号

select deptno 
from emp
group by deptno
having avg(sal) < (select avg(sal) from emp where deptno = 10)

56.查询在纽约工作的所有员工

select *
from emp
where deptno in (select deptno from dept where loc = 'NEW YORK')

57.查询‘SALES’部门平均薪水的等级

select avg(grade)
from emp e join salgrade s
on sal between losal and hisal
where deptno = (select deptno from dept where dname = 'SALES')

58.查询10号部门的员工在整个公司中所占的比例:

select count(empno)/(select count(empno) from emp)
from emp 
where deptno =10

59.emp显示前5条。

select *
from emp
limit 0,5

60.查询各部门工资大于该部门平均工资的员工信息:

select *
from emp e
where sal >(select avg(sal) from emp where deptno = e.deptno)

61.查询各岗位工资小于该岗位平均工资的员工信息;

select *
from emp e
where sal >(select avg(sal) from emp where job = e.job)

62.查询所有领导的信息:要求使用exists关键字

select *
from emp e
where exists (select 1 from emp where mgr = e.empno)

63.查询所有员工的姓名,薪水,部门名称

select ename,sal,dname
from emp e join dept d
on e.deptno = d.deptno

64.查询所有员工的姓名,薪水,部门名称,薪水等级

select ename,sal,dname,grade
from emp e join dept d
on e.deptno = d.deptno
join salgrade s
on sal between losal and hisal

65.查询员工姓名及领导者姓名

select e.ename,m.ename
from emp e join emp m
on e.mgr = m.empno

66.查询所有员工的姓名,部门名称

select ename,dname
from emp e join dept d
on e.deptno = d.deptno

练习题:

1.查询员工表中工资大于1600的员工的姓名和工资

select ename,sal
from emp
where sal >1600

2.查询员工表中员工号是17的员工的姓名和部门编号

select ename,deptno 
from emp
where empno = 17

3.选择员工表中工资不在4000到5000内的员工的姓名和工资.

select ename,sal
from emp 
where sal < 4000 or sal >5000

4.选择员工表中在20和30部门工作的员工的姓名和部门号

select ename,deptno 
from emp
where deptno in (20,30)

5.选择员工表中没有管理者的员工姓名及职位,按职位排序.

select ename,job 
from emp
where mgr is null
order by job

6.选择员工表中有奖金的员工姓名,工资和奖金,按工资倒序排列

select ename,sal,comm
from emp
where comm is not null
order by sal desc

7.选择员工表中员工姓名的第三个字母是A的员工姓名

select ename
from emp 
where ename like '__A%'

8.列出部门表中的部门名称和所在城市

select dname,loc
from dept

9.显示员工表中的不重复的岗位job

select distinct job
from emp

10.连接员工表中的员工姓名、职位、薪水,列之间用逗号连接,列头显示成out_put

select concate(ename,',',job,',',sal) out_put
from emp

11.查询员工表中员工号,姓名,工资,以及工资提高百分之20之后的结果

select empno,ename,sal,sal*1.2
from emp

12.查询员工的姓名和工资数,条件限定为工资数必须大于1200,并且查询结果按入职时间进行排序。早入职的员工排在前面

select ename,sal
from emp
where sal > 1200
order by hiredate

13.列出除了'ACCOUNTING'部门之外还有什么部门

select dname
from dept
where dname != 'ACCOUNTING'

14.把雇员按部门分组,求最高薪水,部门号 要求过滤掉名字中第二个字母是’A’的员工, 并且部门的平均薪水 > 3000,按照部门编号倒序排列

select max(sal),deptno
from emp
where ename not like '_A%'
group by deptno 
having avg(sal) >3000
order by deptno desc

15.求工作职位是’manager’的员工姓名,部门名称和薪水等级

select ename,dname,grade
from emp e join dept d
on e.deptno = d.deptno
join salgrade s
on sal between losal and hisal
where job = 'manager'

16.按照部门分组统计,求最高薪水,平均薪水,最低薪水,只有薪水是1200以上的员工才参与统计,并且分组结果中只包含平均薪水在1500以上的部门,并且按照平均薪水倒序排列

select max(sal),avg(sal),min(sal)
from emp
where sal > 1200
group by deptno
having avg(sal) > 1500
order by avg(sal) desc

17.求薪水最高的员工姓名

select ename
from emp 
where sal = (select max(sal) from emp)

18.查询各部门平均薪水等级,并且按平均薪水等级的降序排列

select avg(grade)
from emp e join salgrade s
on sal between losal and hisal
group by deptno
order by avg(grade)

19.查询所有员工姓名以S或s开头的所有员工信息

select *
from emp
where binary ename like 'S%' or binary ename like 's%'

20.查询所有工作时间超过一年的员工编号,姓名及入职时间,要求雇用时间的格式为’yyyy年mm月dd日’

select empno,ename,date_format(hiredate,'%Y年%月m%d日')
from emp
where timestampdiff(year,hiredate,now())>1

21.查询20部门的所有员工的员工姓名,实际收入

select ename,sal
from emp
where deptno = 20

22.查询10部门工资大于3000的员工信息,要求按员工的入职时间由前到后排序

select *
from emp
where sal > 3000 and deptno = 10
order by hiredate

23.查询10部门或20部门的所有员工的姓名,并截取前三位,按员工姓名升序排列

select ename
from emp 
where deptno in (10,20)
order by ename
limit 0,3

24、查询所有员工的姓名,要求所有员工的姓名显示成小写,雇用日期显示为”yyyy-mm-dd”这种格式

select lcase(ename),date_format(hiredate,'%Y-%m-%d')
from emp

25、查询所有员工的姓名,所在部门名称,薪水,薪水等级、直接领导的姓名 (有问题,不显示最高领导)

select ename,dname,sal,grade,m.ename
from emp e join dept d
on e.deptno = d.deptno
join salgrade s
on sal between losal and hisal
join emp m
on e.mgr = m.empno

26、查询部门名称是’ACCOUNTING’的员工姓名及薪水等级

select ename,grade
from emp e join salgrade s
on sal between losal and hisal
where deptno = (select deptno from dept where dname = 'ACCOUNTING')

27、不能使用组函数,查询薪水的最高值.

select sal
from emp
order by sal desc
limit 0,1

28、统计平均薪水最高的部门名称

select dname
from (select dname,avgsal from(select dname,avg(sal) avgsal
from emp e join dept d
on deptno,dname)) f
where avgsal = (select max(avgsal) from (select dname,avg(sal) avgsal
from emp e join dept d
on e.deptno = d.deptno
group by deptno,dname) where dname = f.dname)

29、查询平均薪水等级最低的部门名称

select dname
from (select dname,avggrade from(select dname,avg(grade) avggrade
from emp e join dept d
on e.deptno = d.deptno
join salgrade s
on sal between losal and hisal
group by deptno,dname)) f
where avggrade = (select min(avggrade) from (select dname,avg(grade) avggrade
from emp e join dept d
on e.deptno = d.deptno
join salgrade s
on sal between losal and hisal
group by deptno,dname) where dname = f.dname)

选做

1、查询平均薪水最低的部门名称,要求:只有领导才参加统计

select dname
from (select dname,avgsal from(select dname,avg(sal) avgsal
from emp e join dept d
on deptno,dname)) f
where avgsal = (select max(avgsal) from (select dname,avg(sal) avgsal
from emp e join dept d
on e.deptno = d.deptno
group by deptno,dname where empno in (select distinct mgr from emp)) where dname = f.dname)

2、查询比普通员工的最高薪水还要高的领导者姓名

//领导的员工编号及工资
(select ename,empno,sal
from emp
where empno in (select mgr from emp)) c

//普通员工的编号及工资
select empno,sal
from emp
where empno not in (select mgr from emp)

//普通员工的最高薪水
select max(sal)
from (select sal from(select empno,sal
from emp
where empno not in (select mgr from emp)
) a) b
//求领导姓名
select ename
from (select ename,empno,sal from(select ename,empno,sal
from emp
where empno in (select mgr from emp)) c) d
where sal >(select max(sal)
from (select sal from(select empno,sal
from emp
where empno not in (select mgr from emp)
) a) b)

3、找出薪水最高的五个人

select *
from emp
order by sal desc
limit 0,5

4、查询第2到第7名的员工,按薪水降序排列

select *
from emp
order by sal desc
limit 1,6

5、查询最后入职的5名员工

select *
from emp
order by hiredate desc
limit 0,5
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 章节目标 通过本章学习,应达到如下目标: 掌握子查询可以解决的问题; 了解子查询的分类; 掌握单行子查询、多行子查...
    涎涎阅读 1,297评论 0 0
  • React Router教程 React项目的可用的路由库是React-Router,当然这也是官方支持的。它也分...
    Skll2阅读 75评论 0 0
  • 2020-03-11 cd958916fbc8 字数 4150 · 阅读 0 2020-03-12 02:08 我...
    cd958916fbc8阅读 390评论 0 0
  • 执行./startup.sh,或者./shutdown.sh的时候,报:Permission denied,因为是...
    你说你要一场阅读 2,488评论 0 0
  • 不知自己何时养成得这种毛病,离家的前壹天晚上必定失眠。即使按时上床入睡,告诉自己要好好睡觉,但片刻后便是辗转反侧,...
    傻先生阅读 206评论 0 0