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

2021-06-23 08:26:47 字數 3205 閱讀 1339

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...