很强的Sql语句测试题,能独立做出来你的Sql就出师了
二维关系表 T(F1,F2,F3,F4,F5,F6,F7) 表示如下关系:
┌─────┬─────┬─────┬─────┬─────┬─────┬─────┐
│ 学生ID │ 学生姓名 │ 课程ID │ 课程名 │ 成绩 │ 教师ID │ 教师姓名 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S3 │ 王五 │ K4 │ 政治 │ 53 │ T4 │ 杨老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S1 │ 张三 │ K1 │ 数学 │ 61 │ T1 │ 刘老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S2 │ 李四 │ K3 │ 英语 │ 88 │ T3 │ 李老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S1 │ 张三 │ K4 │ 政治 │ 77 │ T4 │ 杨老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S2 │ 李四 │ K4 │ 政治 │ 67 │ T5 │ 周老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S3 │ 王五 │ K2 │ 语文 │ 90 │ T2 │ 王老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S3 │ 王五 │ K1 │ 数学 │ 55 │ T1 │ 刘老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S1 │ 张三 │ K2 │ 语文 │ 81 │ T2 │ 王老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S4 │ 马六 │ K2 │ 语文 │ 59 │ T1 │ 刘老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S1 │ 张三 │ K3 │ 英语 │ 37 │ T3 │ 李老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ S2 │ 李四 │ K1 │ 数学 │ 81 │ T1 │ 刘老师 │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ .... │ │ │ │ │ │ │
├─────┼─────┼─────┼─────┼─────┼─────┼─────┤
│ .... │ │ │ │ │ │ │
└─────┴─────┴─────┴─────┴─────┴─────┴─────┘
以一句 T-SQL 作答!
1.如果 T 表有一字段 F0 数据类型为自动增量整型(唯一,不重复),
而且 T 表中含有除 F0 字段外,请删除其它字段完全相同的重复多余的数据(要保留其中的一条):
2.查询打打印各科成绩最高和最低的记录: (就是各门课程的最高、最低分的学生和老师)
课程ID,课程名称,最高分,学生ID,学生姓名,教师ID,教师姓名,最低分,学生ID,学生姓名,教师ID,教师姓名
3.按成绩从高到低顺序,查询打印所有学生四门(数学、语文、英语、政治)课程成绩: (就是每个学生的四门课程的成绩)
学生ID,学生姓名,数学,语文,英语,政治,有效课程数,有效平均分
(注: 有效课程即在 T 表中有改学生的成绩计入,如不明白可不打印"有效课程数"和"有效平均分")
4.查询打印数学成绩第十名到第十五名学生成绩单
或打印平均成绩第十名到第十五名的学生成绩单
[学生ID],[学生姓名],数学,语文,英语,政治,平均成绩
5.按各科不及格率的百分数低到高和平均成绩从高到低顺序,查询各科平均成绩和不及格率的百分?(用"N行"表示): (就是分析哪门课程难)
课程ID,课程名,平均成绩,及格百分数
6.查询打印四门课程平均成绩和及格率的百分数(用"1行4列"表示): (就是分析哪门课程难)
数学平均分,数学及格百分数,语文平均分,语文及格百分数,英语平均分,英语及格百分数,政治平均分,政治及格百分数?
7.按不同老师所教不同课程平均分从高到低,查询打印: (就是分析哪个老师的哪门课程水平高)
教师ID,教师姓名,课程程ID,课程名称,平均分 (平均分按去掉一个最高分和一个最低分后取)
8.查询打印各科成绩,各分数段人数:
课程程ID,课程名,[100-85],[85-70],[70-60],[<60]
9.查询打印学生平均成绩及其名次
10.查询打印各科成绩前三名的记录:(不考虑成绩并列情况)
学生ID,学生姓名,科程ID,科程名,成绩,教师ID,教师姓名
11.查询打印参加了所有考试科目的学生
12.查询打印"至少"与学生"S3 (王五)"参加了相同考试科目的学生
--建立表的脚本
CREATE TABLE T (SSNO INT IDENTITY (1001,1),StudentID VARCHAR(20),StudentName VARCHAR(20),
CourseID VARCHAR(20),CourseName VARCHAR(20),Result int,TeacherID VARCHAR(20),TeacherName VARCHAR(20))
INSERT INTO T (StudentID,StudentName,CourseID,CourseName,Result,TeacherID,TeacherName)
SELECT 'S1','Pitt','K1','Math',62,'T1','Mr.Liu'
UNION
SELECT 'S1','Pitt','K2','Chinese',81,'T2','Mr.Wang'
UNION
SELECT 'S1','Pitt','K3','English',37,'T3','Mr.Lee'
UNION
SELECT 'S1','Pitt','K4','Politics',53,'T4','Mr.Yang'
UNION
SELECT 'S2','Smith','K1','Math',65,'T1','Mr.Liu'
UNION
SELECT 'S2','Smith','K2','Chinese',89,'T2','Mr.Wang'
UNION
SELECT 'S2','Smith','K3','English',50,'T3','Mr.Lee'
UNION
SELECT 'S2','Gates','K4','Politics',60,'T4','Mr.Yang'
UNION
SELECT 'S3','Gates','K1','Math',78,'T1','Mr.Wang'
UNION
SELECT 'S3','Gates','K2','Chinese',98,'T2','Mr.Wang'
UNION
SELECT 'S3','Gates','K3','English',71,'T3','Mr.Lee'
UNION
SELECT 'S3','Gates','K4','Politics',45,'T4','Mr.Liu'
UNION
SELECT 'S4','Tom','K1','Math',95,'T1','Mr.Wang'
UNION
SELECT 'S4','Tom','K2','Chinese',84,'T2','Mr.Wang'
UNION
SELECT 'S5','Bill','K1','Math',95,'T1','Mr.Wang'
UNION
SELECT 'S5','Bill','K3','English',97,'T3','Mr.Lee'
UNION
SELECT 'S5','Bill','K4','Politics',77,'T4','Mr.Liu'
UNION
SELECT 'S6','Tim','K1','Math',93,'T1','Mr.Wang'
UNION
SELECT 'S6','Tim','K3','English',45,'T3','Mr.Lee'
UNION
SELECT 'S6','Tim','K4','Politics',53,'T4','Mr.Liu'
UNION
SELECT 'S7','YangXin','K1','Math',61,'T1','Mr.Wang'
UNION
SELECT 'S7','YangXin','K2','Chinese',81,'T2','Mr.Wang'
UNION
SELECT 'S7','YangXin','K4','Politics',53,'T4','Mr.Liu'
UNION
SELECT 'S8','Blade','K2','Chinese',81,'T2','Mr.Wang'
UNION
SELECT 'S8','Blade','K4','Politics',53,'T4','Mr.Liu'