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;
SQL 查詢練習
查詢各部門號和入職日期早於 ward 的人數.select hiredate from emp where ename ward select deptno,count from emp where hiredate select hiredate from emp where ename ward...
sql查詢練習
1 有以表結構如下 id goodsid scount type 6 3 40 out 5 2 30 in 4 1 45 out 3 3 20 out 2 2 20 in 1 1 10 in 要查詢到如下結果 goodsid 進貨 出庫 庫存 解 select goodsid,sum a.sin a...
SQL 簡單練習
use study select from emp 查詢雇員姓名的最後三個字母 select ename,right ename,3 from emp 查詢10部門雇員進入公司的星期數 select ename,datename month,hiredate from emp where deptn...