有一学生成绩表,表内容如下:
  学生表
  学生ID char(6),
  学科ID varchar(20),
  学生成绩 number(4,1)想做成一箱线图,但要根据学科不同,取得以下数据
  1,学生的最高成绩
  2,学生的最低成绩
  3,学生的四分之一值 例:成绩是1,2,3,4时,四分之一值是2.成绩是1,2,8,9时,四分之一值是2.
  4,学生的四分之三值 同上.最大值与最小值之间离四分之三最近的值,上下相同时,取下值.
  5,取得每10分间距内成绩的学生人数.例:0~10的人数,10~20间的人数.如何使用最好的性能取得以上数据,可以加入辅助表或视图.
数据初步确认有50万到100万之间.刚开始想一次取得全部数据,然后在JAVA中计算,但感到数据量太大.
后来想加入辅助表进行关联查询,但觉得查询次数太多,性能可能不好.有哪位高人能以最好的性能解决这个问题,最好给出SQL语句.
数据库是ORACLE11G

解决方案 »

  1.   

    刚开始想一次取得全部数据,然后在JAVA中计算,但感到数据量太大.
    后来想加入辅助表进行关联查询,但觉得查询次数太多,性能可能不好.
    1.全取出来放到java  就失去了数据库的意义了~~   而且IO比较大~
    2.应该不需要辅助表,如果怕查询次数多 就用function返回游标类型。或者 组成固定格式的字符串返回,到java再劈开。