Oracle查询分组排序

lemostic 2017-05-24 06:51:13
有一张学生表:

CREATE TABLE tb_student(
ID VARCHAR2(8) PRIMARY KEY NOT NULL,--学生ID
NAME VARCHAR2(20),--学生姓名
age VARCHAR2(5),--年龄
address VARCHAR2(100),--地址
class_id);--班级ID

数据如下:

INSERT INTO tb_student VALUES('10010001','测试01','12','安宁西路18号','10003');
INSERT INTO tb_student VALUES('10010002','测试02','15','安宁西路18号','10003');
INSERT INTO tb_student VALUES('10010003','测试03','11','安宁西路18号','10001');
INSERT INTO tb_student VALUES('10010004','测试04','12','安宁西路18号','10004');
INSERT INTO tb_student VALUES('10010005','测试05','10','安宁西路18号','10001');
INSERT INTO tb_student VALUES('10010006','测试06','13','安宁西路18号','10005');
INSERT INTO tb_student VALUES('10010007','测试07','15','安宁西路18号','10003');
INSERT INTO tb_student VALUES('10010008','测试08','12','安宁西路18号','10004');
INSERT INTO tb_student VALUES('10010009','测试09','12','安宁西路18号','10001');
INSERT INTO tb_student VALUES('10010010','测试10','13','安宁西路18号','10002');
INSERT INTO tb_student VALUES('10010011','测试11','12','安宁西路18号','10004');
INSERT INTO tb_student VALUES('10010012','测试12','13','安宁西路18号','10003');
INSERT INTO tb_student VALUES('10010013','测试13','12','安宁西路18号','10002');
INSERT INTO tb_student VALUES('10010014','测试14','14','安宁西路18号','10002');
INSERT INTO tb_student VALUES('10010015','测试15','13','安宁西路18号','10005');
INSERT INTO tb_student VALUES('10010016','测试16','12','安宁西路18号','10001');

现在要将学生信息查询出来,按照班级ID分组排序显示,得到以下查询结果:

我的目的是查询出所有数据,而不是分组求和之类的,使用SELECT NAME,age,class_id FROM tb_student GROUP BY name,age,class_id并没有效果,所以请教大家,多谢指教!
...全文
467 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemostic 2017-05-25
  • 打赏
  • 举报
回复
引用 1 楼 落落叶叶无声的回复:
看你的结果并没有什么特别的啊? 直接 SELECT NAME,age,class_id FROM tb_student order by class_id? 还是用分析函数 + partition by
直接查询出来的结果是按照左侧的序号排列的,我是直接在PL/SQL中点击按照CLASS_ID排序才得到图中的效果,我没怎么用过partition,我试一下,非常感谢!
lemostic 2017-05-25
  • 打赏
  • 举报
回复
引用 2 楼 卖水果的net的回复:
要实现什么样的效果呢?》
就是要查询出来的和图上那样的效果,学生按照班级分组显示(即前几行是班级1的所有学生,后面几行是班级2的所有学生),当然图上的效果是我在PL/SQL中直接点击排序显示出来的,这不是SELECT排序的,所以如果我导出查询结果的话,还是乱的,某个班级的若干个学生不同时集中在一起,而是分散在很多行。
jdsnhan 2017-05-25
  • 打赏
  • 举报
回复
楼主的需求是排序,不是分组。那直接用order by就行了,按照你指定的列排序。 SELECT NAME,age,class_id FROM tb_student order by class_id,name
卖水果的net 2017-05-24
  • 打赏
  • 举报
回复
要实现什么样的效果呢?》
落落叶叶无声 2017-05-24
  • 打赏
  • 举报
回复
看你的结果并没有什么特别的啊? 直接 SELECT NAME,age,class_id FROM tb_student order by class_id? 还是用分析函数 + partition by

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧