CLASSNO STUDENTNO GRADE CLASS1 1001 86 CLASS1 1002 60 CLASS1 1003 85 CLASS1 1004 73 CLASS1 1005 95 CLASS1 1006 61 CLASS1 1007 77 CLASS1 1008 71 CLASS1 1009 61 CLASS1 1010 78 CLASS2 2001 81 CLASS2 2002 54 CLASS2 2003 57 CLASS2 2004 75 CLASS2 2005 98 CLASS2 2006 75 CLASS2 2007 76 CLASS2 2008 58 CLASS2 2009 73 CLASS2 2010 55 CLASS3 3001 42 CLASS3 3002 90 CLASS3 3003 81 CLASS3 3004 97 CLASS3 3005 68 CLASS3 3006 72 CLASS3 3007 81 CLASS3 3008 79 CLASS3 3009 87 CLASS3 3010 59 使用plSQL分析下列需求查询每个班级的最高分,最低分,平均分,以及大于平均分的人数,结果输出 班级 最高分 最低分 平均分 大于平均分的人数 得分点
时间: 2024-02-14 20:15:33 浏览: 95
以下是使用 PL/SQL 实现需求的代码:
```
DECLARE
-- 定义变量
v_classno VARCHAR2(10);
v_max NUMBER(3);
v_min NUMBER(3);
v_avg NUMBER(5,2);
v_above_avg NUMBER(2);
BEGIN
-- 循环每个班级
FOR c IN (SELECT DISTINCT CLASSNO FROM STUDENT_GRADE)
LOOP
-- 获取当前班级号
v_classno := c.CLASSNO;
-- 获取当前班级的最高分
SELECT MAX(GRADE) INTO v_max FROM STUDENT_GRADE WHERE CLASSNO = v_classno;
-- 获取当前班级的最低分
SELECT MIN(GRADE) INTO v_min FROM STUDENT_GRADE WHERE CLASSNO = v_classno;
-- 获取当前班级的平均分
SELECT AVG(GRADE) INTO v_avg FROM STUDENT_GRADE WHERE CLASSNO = v_classno;
-- 获取当前班级大于平均分的人数
SELECT COUNT(*) INTO v_above_avg FROM STUDENT_GRADE WHERE CLASSNO = v_classno AND GRADE > v_avg;
-- 输出结果
DBMS_OUTPUT.PUT_LINE(v_classno || ' ' || v_max || ' ' || v_min || ' ' || v_avg || ' ' || v_above_avg);
END LOOP;
END;
```
其中,使用了 PL/SQL 中的循环、变量、SELECT INTO 等语句来实现对每个班级的统计分析。最后通过 DBMS_OUTPUT.PUT_LINE() 函数输出结果。
阅读全文