1、选择部门30中的所有员工
select *from emp where deptno=30
2、列出所有办事员(CLERK)的姓名,编号和部门编号
select ename,empno,deptno from emp where job=‘clerk’
3、找出佣金高于薪金的员工(佣金是奖金)
select * from emp where isnull(comm,0)>sal
4、找出佣金高于薪金的60%的员工
select *from emp where comm>sal*60%
5、找出部门10 中所有的经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料
select *from emp where(deptno=10 and job=‘manager’)or (deptno=20 and job=‘clerk’)
6、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料。
select *from emp where (deptno=10 and job='manager') or (deptno=20 and job='clerk') or (job<>'manager' and job<>'clerk' sal>=2000)
7、找出收取佣金的员工的不同工作
select distinct job from emp where comm >0
8、找出不收取佣金或收取佣金低于100的员工
select *from emp where comm<100 or comm is null
9、找出各月倒数第3天受雇的员工
10、找出早于12年前受雇的员工
select *from emp where datediff(year,hiredate,getdate())>12
11、以首字母大写的方式显示所有员工的姓名
upper len substring
select upper(substring(ename,1,1))+lower(substring(ename,2,len(ename))) from emp
12、显示正好为5个字符的员工的姓名
select *from emp where ename like ‘-----’
select *from emp where len(ename)=5
13、显示所有员工姓名的前三个字符
select substrin(ename,1,3) from emp;
14、显示所有员工的姓名,用‘a‘替换所有‘A’
select replace(ename,'A','a')from emp
15、显示满10年服务上限的员工的姓名和受雇日期
select ename,hiredate from emp where datediff(year,hiredate,getdate())>10
16、显示员工的详细资料,并按姓名排序。
select *from emp order by ename
17、显示员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序
select ename,job,sal from emp order by job desc,sal
18、显示所有员工的姓名、加入公司的年份和月份,接受雇佣的日期所在月排序,若月份相同则将最早年份的员工排在最前面
select ename,datepart(year,hiredate)y,datepart(month,hiredate) from emp order by m,y
============================================================================
1、列出至少有一个员工的部门
select count(*),deptno from emp group by deptno having count(*)>1
2、列出薪金比‘SMITH’多的所有员工
select *from emp where sal>(slect sal from emp where ename='smith')
3、列出所有员工的姓名及其直接上级的姓名
select w.ename,b.ename from emp w,emp b where w.mgr=b.empno
4、列出受雇日期晚于其直接上级的所有员工
select w.ename,w.hiredate,b.ename ,b.hiredatefrom emp w,emp b where w.mgr=b.empno and w.hiredate>b.hiredate
5、列出部门名称和这些部门的员工信息,同时列出没有员工的部门
select d.dname, e.ename,e.job from emp e right join dept d on e.deptno=d.deptno
6、列出所有‘CLERK’(办事员)的姓名及其部门名称
select ename,dname from emp,dept where job='CLERK'
7、列出最低薪金大于1500的各种工作
select min(sal),job from emp group by job having min(sal)>1500
8、列出在部门‘sales’(销售部)的工作的员工的姓名
select ename,‘sales’ from emp where deptno=(select deptno from dept where dname=‘sales’)
9、列出薪金高于公司平均薪金的所有员工
select * from emp where sal>(select avg(sal) from emp)
10、列出薪金等于部门30中的员工的薪金的所有的员工的姓名和薪金
select ename,sal from emp where sal in(select sal from emp where deptno=30)
大于
select ename,sal from emp where sal >(select max(sal) from emp where deptno=30)
11、列出在每个部门工作的员工数量、平均工资和平均服务期限
select count(*)总人数,avg(sal)平均工资,avg(datediff(hiredate,getdate()))平均服务年限,deptno from emp group by deptno
12、列出所有部门的详细信息和部门人数
select d2.dname,d2.loc,isnull(d.c,0) from dept d2 left join(select count(*) c,deptno de from emp group by deptno) d
on d2.deptno=d.de
13、列出MANAGER(经理)的最低薪金
select min(sal) from emp where job='manager'
14、列出所有员工的年工资,按年薪从低到高排序
select(sal+isnull(comm,0)*)*12 年工资,ename from emp order by 年工资