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 年工資