SQL 簡單練習

2022-05-01 12:18:07 字數 3755 閱讀 6062

use

study;

select

*from emp

--查詢雇員姓名的最後三個字母

select ename,right(ename,3) from emp ;

--查詢10部門雇員進入公司的星期數

select ename,datename(month,hiredate) from emp where deptno =

10

--1 查詢部門30中的所有員工

select

*from emp where deptno=

30

--2 列出所有辦事員(clerk)的姓名,編號和部門編號

select ename,empno,deptno from emp where job=

'clerk

'

--3 找出佣金高於薪金的員工

select ename from emp where sal >comm

--求出每個雇員的年薪

select ename,sal*

12from emp ;

--4 找出佣金高於薪金的60%的員工

select ename ,sal,comm from emp where sal>comm*

0.6

--5 找出部門10中所有經理(manager)和部門20中所有辦事員(clerk)的詳細資料

select

*from emp where (job =

'manager

'and deptno =

10) or (job =

'manager

'and deptno =

20)

--6 找出部門10中所有經理(manager),部門20中的所有辦事員(cleak),

-- 既不是經理又不是辦事員但薪金大於或等於2000的所有員工的詳細資料

select

*from emp where (job =

'manager

'and deptno =

10) or (job =

'cleak

'and deptno =

20)or(job<>

'manager

'and job<>

'cleak

'and sal >=

2000)

--7 找出收取佣金的員工的不同工作

select

distinct job from emp where comm is

notnull

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

datediff (year,hiredate ,getdate())>

12

--11 以首字母大寫的方式顯示所有員工的姓名

select

upper(substring(ename,1,1))+

lower(substring (ename,2,len(ename)))from emp

--12 顯示正好為5個字元的員工的姓名

select ename from emp where

len(ename)=

5 ;

--13 顯示不帶有"r"的員工的姓名

select ename from emp where ename not

like'r

'

--14 顯示所有員工的姓名的前三個字元

select ename,right(ename,3) from emp

--15 顯示所有員工的姓名,用"a"代替所有的"a"

select

replace(ename,'

a','

a')from emp

--16 顯示滿10年服務年限的員工的姓名和受僱日期

select ename,hiredate from emp where

datediff(year,hiredate,getdate())>

10

--17 顯示員工詳細資訊,按姓名排序

select

*from emp order

by ename

--18 顯示員工的姓名和受僱日期,根據其服務年限,將最老的員工排在前面

select ename,hiredate from emp order

bydatediff(year ,hiredate ,getdate())desc

--19 顯示所有員工的姓名,工作和薪金,按工作的降序排序,若工作相同則薪金排序

select ename,job,sal from emp order

by job desc,sal

--20 顯示所有員工的姓名,加入公司的年份和月份,按受僱日期所在月排序,若月份相同則將

--最早年份的員工排在前面

select ename,year(hiredate)'

年份',month(hiredate)'月份'

from emp order

by 月份,年份

--21 顯示在乙個月為30天的情況,所有員工的日薪金,忽略餘數

select ename,floor(sal/

30) from emp

--22 找出在(任何年份的)2月受僱的所有員工

select ename from emp where

month(hiredate)=

2

--23 對於每個員工,顯示其加入公司的天數

select ename,datediff (day,hiredate ,getdate()) from emp

--24 顯示姓名欄位的任何位置包含"a"的所有員工的姓名

select ename from emp where ename like

'%a%

';

--25 以年月日的方式顯示所有員工的服務年限(大概)

select ename, floor(datediff(day,hiredate ,getdate())/

365),floor(floor(datediff(day,hiredate ,getdate()))-

floor(datediff(day,hiredate ,getdate())/

365)*

365)/

12from emp

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

SQL語句練習

建立一張表,記錄 呼叫員的工作流水,記錄呼叫員編號,對方號碼,通話開始時間,結束時間。建表,插資料等都自己寫出sql 要求 輸出所有資料中通話時間最長的5條記錄。輸出所有資料中撥打長途號碼 對方號碼以0開頭 的總時長 輸出本月通話時長最多的前三個呼叫員的編號 輸出本月撥打 次數最多的前三個呼叫員的編...

SQL 語句練習

mysql select from persons limit 5 oracle select from persons where rownum 5 select from persons where name like l select from persons where name not l...