1丶成绩表(学号,课程,成绩)
2、数据库表t_tongji包括:学号、平均成绩两个字段;
3、编写存储过程,计算每个学生的平均成绩,并插入到t_tongji表中;怎么实现,求大神给答案!!

解决方案 »

  1.   

    select 学号,sum(成绩)/count(1) 平均成绩 from 成绩表 group by 学号
      

  2.   

    CREATE OR REPLACE PROCEDURE insert_t_tongji IS
    BEGIN
      FOR i IN SELECT 学号,AVG(成绩) 平均成绩 FROM 成绩表 GROUP BY 学号 LOOP
        INSERT INTO t_tongji VALUES(i.学号,i.平均成绩);
     END LOOP;
    END;
      

  3.   

    上面写错了
     FOR i IN (SELECT 学号,AVG(成绩) 平均成绩 FROM 成绩表 GROUP BY 学号) LOOP加括号
      

  4.   

    create or replace procedure P
    as
    begin
      insert into  t_tongji select 学号,avg(成绩) from 成绩表 group by 学号; 
    end P;
      

  5.   

    create table grade(
    stuid varchar2(20),
    class varchar2(20),
    grade number(4,2)
    );
    --创建统计表
    create table t_tongji(
    stuid varchar2(20),
    grade_avg number(4,2)
    );
    --插入测试数据
    begin
      for varA in 1..10
        loop
          for varB in 21..26
          loop
            insert into grade values(varA,varB||'班',dbms_random.value*100);
          end loop; 
        end loop;
    end;
    /
    --存储过程
    create or replace procedure grade_tongji as
    begin
    for varA in (select stuid,avg(grade) grade_avg from grade group by stuid)
    loop
       insert into t_tongji values(varA.stuid,varA.grade_avg);
    end loop;
    end;
    /
    --以上步骤经过测试没问题,楼主可以试下