内部测试表:TestInfo
TestID Stage TestName
1 S1 Logic Java
2 S1 HTML
3 S1 SQL
4 S1 C#/WinForms
5 S2 SQL Server
6 S2 .Net
7 S2 JavaScript
8 S2 Java
9 Y2 .NET
10 Y2 Java
 
内部测试成绩表:TestScore
TestID Class StudentName Score
1 S1161 张良宝 80
1 S1161 刘宇 100
2 S1161 张良宝 60
2 S1161 刘宇 60
2 S1161 严琴 80
1 S1162 杨超 40
1 S1162 张立华 100
1 S1162 陈磊 80
1 S1162 张伟 60
2 S1162 杨超 60
2 S1162 张立华 80
2 S1162 陈磊 80
2 S1162 张伟 40
2 S1162 杨飞 100   

 使用分组查询,查询出不同阶段(S1、S2、Y2)内部测试的次数;
 查询出S1161班第二次内部测试的平均成绩;
 S1162班学员“杨飞”, Logic Java内部测试成绩为80分,录入时遗漏,请编写SQL语句插入该记录;
 查询出内部测试不及格(少于60分)的人员所在的班级、姓名、内部测试名称、内部测试成绩。

解决方案 »

  1.   

    -- 使用分组查询,查询出不同阶段(S1、S2、Y2)内部测试的次数;select C2,count(1) as  次数 from [tb] group by C2
    /*
    C2    次数
    ----- -----------
    S1    4
    S2    4
    Stage 1
    Y2    2(4 行受影响)*/
      

  2.   

    -- 查询出S1161班第二次内部测试的平均成绩;select  avg(Score) from  TestScore where TestID=2 and Class='S1161'
      

  3.   

    --S1162班学员“杨飞”, Logic Java内部测试成绩为80分,录入时遗漏,请编写SQL语句插入该记录;
    insert into TestScore values(1,'S1162',杨飞,80)
      

  4.   

    --查询出内部测试不及格(少于60分)的人员所在的班级、姓名、内部测试名称、内部测试成绩
    select Class, StudentName,b.TestName, Score from TestScore a
    left join TestInfo a.TestID =b.TestID 
    where Score<60
      

  5.   

    select TestID,count(*) as 测试次数
    from TestInfo
    group by TestIDselect TestID,avg(Score) as 平均成绩
    from TestScore
    where TestID='2'insert into TestScore 
    values(1,'S1162',杨飞,80)select Class,StudentName,TestName,Score 
    from TestScore,TestInfo
    where TestScore.TestID=TestInfo.TestID and Score<60
      

  6.   

    1. 
     select Stage,count(1) as 内部测试的次数 from TestInfo group by Stage2.
    select  avg(Score) from  TestScore where TestID=2 and Class='S1161'3.insert into TestScore select 1,'S1162',杨飞,80 4.
    select
     a.Class, a.StudentName,b.TestName, b.Score 
    from
     TestScore a
    left join TestInfo b 
    on
     a.TestID =b.TestID 
    where
     b.Score<60