sql语句 oracle 10g习题

来源:百度知道 编辑:UC知道 时间:2024/06/30 15:59:10
编写一个SELECT语句用以检索“学生信息”表中的“姓名”和“出生日期”列,并实现由“班级”列汇总数据,然后输出各班的平均成绩。

select 姓名,出生日期,avg(成绩)over(partition by 班级) as 平均成绩
from 学生信息;

根据你的问题,只能写成这样了,不过要提醒一句你的想法很有问题:
1、【由“班级”列汇总数据,然后输出各班的平均成绩】
根据这个要求一个班级只能出现一个平均成绩,假设一个班有50名同学,最后汇总出来的数据就是一条。

2、由于【1】的原因,显示【“姓名”和“出生日期”列】是不应该的,50个学生的信息显示谁的?

3、我写的sql是把每一个学生的信息全显示了,并在每一条信息后面追加上班级的【平均成绩】,根据你的要求和数据库的限制只能这样了。

---
以上,希望对你有所帮助。

--表
CREATE TABLE stu
(name VARCHAR2(10),
class VARCHAR2(10),
score NUMBER)

--数据
INSERT INTO STU SELECT 'name_' || LPAD(ROWNUM,4,'0') AS NAME,A.CLASS,ROUND(DBMS_RANDOM.VALUE(60,100),1) AS SCORE FROM (SELECT ROWNUM AS CLASS FROM DUAL CONNECT BY ROWNUM<=10) A,(SELECT * FROM DUAL CONNECT BY ROWNUM<=10) B;

--查找
SELECT CLASS, NAME,AVG(SCORE) FROM STU GROUP BY ROLLUP(CLASS,NAME);

CLASS NAME AVG(SCORE)
---------- ---------- ----------
1 name_0001 75.5
1 name_0002 97.5
1