有一学生成绩表,表内容如下:
学生表
学生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
学生表
学生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 就失去了数据库的意义了~~ 而且IO比较大~
2.应该不需要辅助表,如果怕查询次数多 就用function返回游标类型。或者 组成固定格式的字符串返回,到java再劈开。