1. 程式人生 > >SQL簡單查詢練習彙總(單個表)

SQL簡單查詢練習彙總(單個表)

USE [study] GO --0 查詢僱員姓名的最後三個字母 select ename,SUBSTRING(ename,LEN(ename)-2,LEN(ename)) from EMP; --0.5 查詢10部門僱員進入公司的星期數 select EMP.ename,DATEDIFF(WEEK,hiredate,GETDATE()) from EMP where deptno=10; --1 查詢部門30中的所有員工 select * from EMP where deptno=30; --2 列出所有辦事員(CLERK)的姓名,編號和部門編號 select EMP.ename,EMP.empno,DEPT.deptno from EMP inner join DEPT  on emp.deptno=dept.deptno where emp.job='CLERK'; --3 找出佣金高於薪金的員工 select *from EMP where comm>sal; --3.5求出每個僱員的年薪 select ename,SAL*12 from EMP; --4 找出佣金高於薪金的60%的員工 select * from EMP where comm>sal*0.6; --5 找出部門10中所有經理(MANAGER)和部門20中所有辦事員(CLERK)的詳細資料 select * from EMP where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK'); --6 找出既不是經理又不是辦事員但薪金大於或等於2000的所有員工的詳細資料 select * from EMP where job!='MANAGER' and job!='CLERK' and sal>=2000; --7 找出收取佣金的員工的不同工作 select distinct job from emp where comm is not null; --8 找出不收取佣金或收取佣金低於100的員工 select * from emp where comm is null or comm<100; --9 找出各月倒數第3天受僱的所有員工 select * from EMP where MONTH(DATEADD(day,3,hiredate))=MONTH(DATEADD(MONTH,1,hiredate)); --10 找出早於12年前受僱的員工 select *from EMP where YEAR(dateadd(year,12,hiredate)) --11 以首字母大寫的方式顯示所有員工的姓名 select UPPER(substring(ename,1,1))+LOWER(SUBSTRING(ename,2,LEN(ename))) from emp; --12 顯示正好為5個字元的員工的姓名 select ename from EMP where ename like '_____'; select ename from EMP where len(ename)=5; --13 顯示不帶有"R"的員工的姓名 select ename from EMP where ename not like '%R%'; --14 顯示所有員工的姓名的前三個字元 select ename,SUBSTRING(ename,1, 3) from EMP; --15 顯示所有員工的姓名,用"a"代替所有的"A" select REPLACE(ename,'A','a') from emp;  --16 顯示滿10年服務年限的員工的姓名和受僱日期 select ename,hiredate from EMP where YEAR(GETDATE()-hiredate)>10; --17 顯示員工詳細資訊,按姓名排序 select * from EMP order by ename asc; --18 顯示員工的姓名和受僱日期,根據其服務年限,將最老的員工排在前面 select ename,hiredate from EMP order by YEAR(GETDATE()-hiredate) desc; --19 顯示所有員工的姓名,工作和薪金,按工作的降序排序,若工作相同則薪金排序 select ename,job,sal from EMP order by job desc,sal desc; --20 顯示所有員工的姓名,加入公司的年份和月份,按受僱日期所在月排序,若月份相同則將 --最早年份的員工排在前面 select ename,YEAR(hiredate) year,MONTH(hiredate) month  from EMP order by month asc,year asc; --21 顯示在一個月為30天的情況,所有員工的日薪金,忽略餘數 select ename,round(sal/30,0) from EMP; --22 找出在(任何年份的)2月受僱的所有員工 select * from EMP where hiredate like '%-02-%'; --23 對於每個員工,顯示其加入公司的天數 select DATEDIFF(DAY,hiredate,GETDATE()) from emp; --24 顯示姓名欄位的任何位置包含"A"的所有員工的姓名 select ename from EMP where ename like '%A%'; --25 以年月日的方式顯示所有員工的服務年限(大概) select ename,convert(varchar(10),(DATEDIFF(DAY,hiredate,GETDATE())/365))+'年'+ convert(varchar(10),(DATEDIFF(DAY,hiredate,GETDATE())65/30))+'月'+ convert(varchar(10),(DATEDIFF(DAY,hiredate,GETDATE())650))+'日' from EMP; select ename,DATEDIFF(DAY,hiredate,GETDATE())/365 年, DATEDIFF(DAY,hiredate,GETDATE())65/30 月, DATEDIFF(DAY,hiredate,GETDATE())650 日 from EMP;