資料庫語句練習題
1. 資料庫select語句練習題啊!!!
10.題答案
select 課程號,總分,平均分,最高分,最低分(
select 課程號,
總分=sum(成績),
平均分=sum(成績)/count(*),
最高分=max(成績),
最低分=min(成績)
from 成績
group by 課程號) as kc order by 平均分 desc
11.題答案
select 課程號,
平均分=sum(成績)/count(*)
from 成績
where 課程號='1001' or 課程號='1002'
group by 課程號
12.題答案
select 姓名,xs.學號,kc.平均分
from 學生 as xs
left join (select 學號,
平均分=sum(成績)/count(*)
from 成績
group by 學號) as kc on kc.學號=xs.學號
where kc.平均分>80
2. 求一道SQL資料庫的語句題解答!求SQL專家完全解答!!!!
use 教師資料庫
go
/*1、創建教師表*/
create table 教師表
(
教師編號 char(6) primary key,
姓名 varchar(10) not null,
性別 varchar(10) not null,
職稱 varchar(10),
身份證號 varchar(10) unique nonclustered
)
/*2、創建課程表*/
create table 課程表
(
課號 char(6) primary key,
名稱 varchar(20) not null
)
/*3、創建任課表*/
create table 任課表
(
ID int null,
教師編號 char(6) references 教師表(教師編號),
課號 char(6) references 課程表(課號),
課時數 int
)
/*4、將下列課程信息添加到課程表的代碼*/
insert 課程表 values ('100001','SQL Server資料庫')
insert 課程表 values ('100002','數據結構')
insert 課程表 values ('100003','VB程序設計')
/*5 、查找所有教師的信息。*/
select * from 教師表
/*6、檢索有一門或一門以上課程課時數大於90的所有教師的信息,包括編號、姓名。*/
select 教師編號,姓名 from 教師表 where EXISTS (select count(*) from 任課表 where 教師表.教師編號=任課表.教師編號 group by 教師編號 HAVING count(*)>90)
/*7、查找張老師的代課總課數。*/
select count(*) from 任課表 where EXISTS (select * from 教師表 where 教師表.教師編號=任課表.教師編號 and 姓名='張老師')
3. SQL的練習,求答案!!!
有一些類似的題看看吧 一定有幫助
實驗一
練習1、請查詢表DEPT中所有部門的情況。
select * from dept;
練習2、查詢表DEPT中的部門號、部門名稱兩個欄位的所有信息。
select deptno,dname from dept;
練習3、請從表EMP中查詢10號部門工作的雇員姓名和工資。
select ename,sal from emp where deptno=10;
練習4、請從表EMP中查找工種是職員CLERK或經理MANAGER的雇員姓名、工資。
select ename,sal from emp where job='CLERK' or job='MANAGER';
練習5、請在EMP表中查找部門號在10-30之間的雇員的姓名、部門號、工資、工作。
select ename,deptno,sal,job from emp where deptno between 10 and 30;
練習6、請從表EMP中查找姓名以J開頭所有雇員的姓名、工資、職位。
select ename,sal,job from emp where ename like 'J%';
練習7、請從表EMP中查找工資低於2000的雇員的姓名、工作、工資,並按工資降序排列。
select ename,job,sal from emp where sal<=2000 order by sal desc;
練習8、請從表中查詢工作是CLERK的所有人的姓名、工資、部門號、部門名稱以及部門地址的信息。
select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=』CLERK』;
練習9、查詢表EMP中所有的工資大於等於2000的雇員姓名和他的經理的名字。
select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000;
練習10、在表EMP中查詢所有工資高於JONES的所有雇員姓名、工作和工資。
select ename,job,sal from emp where sal>(select sal from emp where ename=』JONES』);
練習11、列出沒有對應部門表信息的所有雇員的姓名、工作以及部門號。
select ename,job,deptno from emp where deptno not in (select deptno from dept);
練習12、查找工資在1000~3000之間的雇員所在部門的所有人員信息
select * from emp where deptno in (select distinct deptno from emp where sal between 1000 and 3000);
練習13、雇員中誰的工資最高。
select ename from emp where sal=(select max(sal) from emp);
select ename from (select * from emp order by sal desc) where rownum<=1;
*練習14、雇員中誰的工資第二高(考慮並列第一的情況,如何處理)。
select ename,sal from (select ename ,sal from emp where sal<(select max(sal) from emp) order by sal desc) where rownum<=1;
實驗二
1. 查詢所有雇員的姓名、SAL與COMM之和。
select ename,sal+nvl(comm,0) 「sal-and-comm」 from emp;
2. 查詢所有81年7月1日以前來的員工姓名、工資、所屬部門的名字
select ename,sal,dname from emp,dept where emp.deptno=dept.deptno and hiredate<=to_date(『1981-07-01』,』yyyy-mm-dd』);
3. 查詢各部門中81年1月1日以後來的員工數
select deptno,count(*) from emp where hiredate>=to_date(『1981-01-01』,』yyyy-mm-dd』) group by deptno;
4. 查詢所有在CHICAGO工作的經理MANAGER和銷售員SALESMAN的姓名、工資
select ename,sal from emp where (job=』MANAGER』 or job=』SALES』) and deptno in (select deptno from dept where loc=』CHICAGO』);
5. 查詢列出來公司就職時間超過24年的員工名單
select ename from emp where hiredate<=add_months(sysdate,-288);
6. 查詢於81年來公司所有員工的總收入(SAL和COMM)
select sum(sal+nvl(comm,0)) from emp where to_char(hiredate,』yyyy』)=』1981』;
7. 查詢顯示每個雇員加入公司的准確時間,按××××年××月××日 時分秒顯示。
select ename,to_char(hiredate,'yyyy-mm-dd hh24:mi:ss') from emp;
8. 查詢公司中按年份月份統計各地的錄用職工數量
select to_char(hiredate,'yyyy-mm'),loc,count(*) from emp,dept
where emp.deptno=dept.deptno group by to_char(hiredate,'yyyy-mm'),loc;
9. 查詢列出各部門的部門名和部門經理名字
select dname,ename from emp,dept where emp.deptno=dept.deptno and job=』MANAGER』;
10. 查詢部門平均工資最高的部門名稱和最低的部門名稱
select dname from dept where deptno=(select deptno from (select deptno from emp group by deptno order by avg(sal) ) where rownum<=1)
union all select dname from dept where deptno=(select deptno from (select deptno from emp group by deptno order by avg(sal) desc ) where rownum<=1);
11. *查詢與雇員號為7521員工的最接近的在其後進入公司的員工姓名
select ename from (select ename from
(select ename from emp where hiredate>(select hiredate from emp where empno=7521) order by hiredate ) where rownum<=1)