sql查询范例1.1

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表

问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
 
select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
 
from SC where C#='002') b
 
where a.score>b.score and a.s#=b.s#;
2、查询平均成绩大于60分的同学的学号和平均成绩;
   
select S#,avg(score)
   
from sc
   
group by S# having avg(score) >60;
3、查询所有同学的学号、姓名、选课数、总成绩;
 
select Student.S#,Student.Sname,count(SC.C#),sum(score)
 
from Student left Outer join SC on Student.S#=SC.S#
 
group by Student.S#,Sname
4、查询姓“李”的老师的个数;
 
select count(distinct(Tname))
 
from Teacher
 
where Tname like '李%';
5、查询没学过“叶平”老师课的同学的学号、姓名;
   
select Student.S#,Student.Sname
   
from Student 
   
where S# not in (select distinct( SC.S#) from SC,Course,Teacher where  SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平');
6、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;
 
select Student.S#,Student.Sname from Student,SC where Student.S#=SC.S# and SC.C#='001'and exists( Select * from SC as SC_2 where SC_2.S#=SC.S# and SC_2.C#='002');
7、查询学过“叶平”老师所教的所有课的同学的学号、姓名;
 
select S#,Sname
 
from Student
 
where S# in (select S# from SC ,Course ,Teacher where SC.C#=Course.C# and Teacher.T#=Course.T# and Teacher.Tname='叶平' group by S# having count(SC.C#)=(select count(C#) from Course,Teacher  where Teacher.T#=Course.T# and Tname='叶平'));
8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
 
Select S#,Sname from (select Student.S#,Student.Sname,score ,(select score from SC SC_2 where SC_2.S#=Student.S# and SC_2.C#='002') score2
 
from Student,SC where Student.S#=SC.S# and C#='001') S_2 where score2 <score;
9、查询所有课程成绩小于60分的同学的学号、姓名;
 
select S#,Sname
 
from Student
 
where S# not in (select Student.S# from Student,SC where S.S#=SC.S# and score>60);
10、查询没有学全所有课的同学的学号、姓名;
   
select Student.S#,Student.Sname
   
from Student,SC
   
where Student.S#=SC.S# group by  Student.S#,Student.Sname having count(C#) <(select count(C#) from Course);
11、查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;
   
select S#,Sname from Student,SC where Student.S#=SC.S# and C# in select C# from SC where S#='1001';
12、查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;
   
select distinct SC.S#,Sname
   
from Student,SC
   
where Student.S#=SC.S# and C# in (select C# from SC where S#='001');
13、把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;
   
update SC set score=(select avg(SC_2.score)
   
from SC SC_2
   
where SC_2.C#=SC.C# ) from Course,Teacher where Course.C#=SC.C# and Course.T#=Teacher.T# and Teacher.Tname='叶平');
14、查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;
   
select S# from SC where C# in (select C# from SC where S#='1002')
   
group by S# having count(*)=(select count(*) from SC where S#='1002');
15、删除学习“叶平”老师课的SC表记录;
    Delect SC
   
from course ,Teacher 
   
where Course.C#=SC.C# and Course.T#= Teacher.T# and Tname='叶平';
16、向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2
    号课的平均成绩;
   
Insert SC select S#,'002',(Select avg(score)
   
from SC where C#='002') from Student where S# not in (Select S# from SC where C#='002');
17、按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示: 学生ID,,数据库,企业管理,英语,有效课程数,有效平均分
   
SELECT S# as 学生ID
        ,(
SELECT score FROM SC WHERE SC.S#=t.S# AND C#='004') AS 数据库
        ,(
SELECT score FROM SC WHERE SC.S#=t.S# AND C#='001') AS 企业管理
        ,(
SELECT score FROM SC WHERE SC.S#=t.S# AND C#='006') AS 英语
        ,
COUNT(*) AS 有效课程数, AVG(t.score) AS 平均成绩
   
FROM SC AS t
   
GROUP BY S#
   
ORDER BY avg(t.score) 
18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分
   
SELECT L.C# As 课程ID,L.score AS 最高分,R.score AS 最低分
   
FROM SC L ,SC AS R
   
WHERE L.C# = R.C# and
        L.score
= (SELECT MAX(IL.score)
                     
FROM SC AS IL,Student AS IM
                     
WHERE L.C# = IL.C# and IM.S#=IL.S#
                     
GROUP BY IL.C#)
       
AND
        R.Score
= (SELECT MIN(IR.score)
                     
FROM SC AS IR
                     
WHERE R.C# = IR.C#
                 
GROUP BY IR.C#
                    );
19、按各科平均成绩从低到高和及格率的百分数从高到低顺序
   
SELECT t.C# AS 课程号,max(course.Cname)AS 课程名,isnull(AVG(score),0) AS 平均成绩
        ,
100 * SUM(CASE WHEN  isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) AS 及格百分数
   
FROM SC T,Course
   
where t.C#=course.C#
   
GROUP BY t.C#
   
ORDER BY 100 * SUM(CASE WHEN  isnull(score,0)>=60 THEN 1 ELSE 0 END)/COUNT(*) DESC
20、查询如下课程平均成绩和及格率的百分数(用"1行"显示): 企业管理(001),马克思(002),OO&UML (003),数据库(004
   
SELECT SUM(CASE WHEN C# ='001' THEN score ELSE 0 END)/SUM(CASE C# WHEN '001' THEN 1 ELSE 0 END) AS 企业管理平均分
        ,
100 * SUM(CASE WHEN C# = '001' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '001' THEN 1 ELSE 0 END) AS 企业管理及格百分数
        ,
SUM(CASE WHEN C# = '002' THEN score ELSE 0 END)/SUM(CASE C# WHEN '002' THEN 1 ELSE 0 END) AS 马克思平均分
        ,
100 * SUM(CASE WHEN C# = '002' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '002' THEN 1 ELSE 0 END) AS 马克思及格百分数
        ,
SUM(CASE WHEN C# = '003' THEN score ELSE 0 END)/SUM(CASE C# WHEN '003' THEN 1 ELSE 0 END) AS UML平均分
        ,
100 * SUM(CASE WHEN C# = '003' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '003' THEN 1 ELSE 0 END) AS UML及格百分数
        ,
SUM(CASE WHEN C# = '004' THEN score ELSE 0 END)/SUM(CASE C# WHEN '004' THEN 1 ELSE 0 END) AS 数据库平均分
        ,
100 * SUM(CASE WHEN C# = '004' AND score >= 60 THEN 1 ELSE 0 END)/SUM(CASE WHEN C# = '004' THEN 1 ELSE 0 END) AS 数据库及格百分数
 
FROM SC

SQL查询相关技术,源码大放送! 10.1 SELECT子句 426   实292 查询特定列数据 426   实293 使用列别名 428   实294 在列上加入计算 430 EX10_03   实295 使用函数设置条件 431   10.2 查询常量 432   实296 查询数字 433   实297 查询字符串 434   实298 查询日期数据 436   实299 查询逻辑型数据 437   实300 查询空数据 438   10.3 查询变量 440   实301 利用变量查询字符串数据 440   实302 利用变量查询数值型数据 441   实303 利用变量查询日期型数据 442   10.4 模式查询 444   实304 利用“_”通配符进行查询 444   实305 利用“%”通配符进行查询 445   实306 利用“[]”通配符进行查询 446   实307 利用“[^]”通配符进行查询 448   实308 复杂的模式查询 449   10.5 TOP和PERCENT限制查询结果 450   实309 查询前10名数据 450   实310 取出数据统计结果的前10名数据 451   实311 查询销售量占前50%的图书信息 453   实312 查询库存数量占后20%的图书信息 454   10.6 周期、日期查询 455   实313 查询指定日期的数据 455   实314 查询指定时间段的数据 457   实315 按月查询数据 458   10.7 比较、逻辑、重复查询 460   实316 查询数据大于指定条件的数据 460   实317 NOT与谓词进行组合条件的查询 461   实318 查询时不显示重复记录 463   实319 列出数据中的重复记录和记录条数 465   10.8 在查询中使用OR和AND运算符 466   实320 利用OR运算符进行查询 466   实321 利用AND运算符进行查询 467   实322 同时利用OR、AND运算符进行查询 469   10.9 排序、分组统计 471   实323 数据分组统计(单列) 471   实324 在分组查询中使用ALL关键字 473   实325 在分组查询中使用CUBE运算符 475   实326 在分组查询中使用ROLLUP 477   实327 对数据进行降序查询 479   实328 对数据进行多条件排序 480   实329 对统计结果进行排序 482   实330 按仓库分组统计图书库存(多列) 483   实331 多表分组统计 484   实332 使用COMPUTE 485   实333 使用COMPUTE BY 487   10.10 聚合函数 488   实334 利用聚合函数SUM对销售额进行汇总 488   实335 利用聚合函数AVG求某班学生的平均年龄 490   实336 利用聚合函数MIN求销售额、利润最少的商品 492   实337 利用聚合函数MAX求月销售额完成最多的员工 493   实338 利用聚合函数COUNT求日销售额大于某值的商品数 495   实339 利用聚合函数First或Last求数据表中第一条或最后一条记录 496   10.11 多表查询(连接查询) 498   实340 利用FROM子句进行多表查询 498   实341 使用表别名 499   实342 合并多个结果集 501   10.12 嵌套查询 503   实343 简单嵌套查询 503   实344 复杂嵌套查询 504   实345 嵌套查询查询统计中的应用 506   10.13 子查询 508   实346 用子查询做派生的表 508   实347 用子查询作表达式 510   实348 在Update语句中应用子查询 511   10.14 联合语句Union 512   实349 使用联合查询 512   实350 多表联合查询 514   实351 对联合查询后的结果进行排序 515   10.15 内联接查询 517   实352 简单内联接查询 517   实353 复杂内联接查询 518   实354 使用内联接选择一个表与另一个表中行相关的所有行 519   10.16 外联接查询 520   实355 left outer join查询 521   实356 right outer join查询 522   实357 使用外联接进行多表联合查询 523   10.17 利用IN进行查询 525   实358 用IN查询表中的记录信息 525   实359 使用IN引入子查询限定查询范围 526   10.18 交叉表查询 527   实360 利用Trasform分析数据 527   实361 利用Trasform动态分析数据 529   实362 静态交叉表(SQLServer 2000) 531   实363 动态交叉表(SQLServer 2000) 533   10.19 函数查询 535   实364 在查询语句中使用格式化函数 536   实365 在查询语句中使用字符串函数 537   实366 在查询中使用日期函数 538   10.20 having语句应用 540   实367 利用having语句过滤分组数据 540   实368 having语句应用在多表查询中 541   10.21 视图的应用 543   实369 在C#中应用视图 543   实370 获取数据库中的全部用户视图 544   实371 通过视图修改数据 545   10.22 存储过程的应用 546   实372 C#应用存储过程 546   实373 应用存储过程添加数据 547   实374 应用存储过程修改数据 549   实375 应用存储过程删除数据 550   实376 C#应用查询存储过程 551   实377 获取数据库中全部的存储过程 552   实378 加密存储过程 553   10.23 触发器的应用 555   实379 Insert触发器的应用 555   实380 Update触发器在系统日志中的应用 556   实381 触发器的嵌套使用 557   实382 获取数据库中的触发器 559
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值