表A有以下数据
type name
1202 张三
1202 张四
1201 王八
1202 秦浩
1203 王浩
1202 武平
1203 廖明
1203 田齐
1203 孟子
---------------
希望按TYPE分组进行编序号,用SQL输出一下结果:
1 1201 王八
1 1202 张三
2 1202 秦浩
3 1202 武平
1 1203 王浩
2 1203 廖明
3 1203 田齐
4 1203 孟子
------------------------------
如何实现?谢谢!
解决方案 »
- 这有几个关于oracle、unix和Java的题,哪位前辈能完美回答下?
- VC9使用OCCI创建表,代码有错误,求指正
- 求助:怎样用oracle的pl/sql软件将数据库中所有的建表语句以及数据导出
- 限制密码长度的触发器……
- 求教如何在windows中进入oracle的图形管理界面
- 问个关于递归查询问题,急!
- 急!!!SQL里的一个莫名其妙的问题_______在线等
- 问题求助,在线等,急急急急急!!!
- 请问oracle有没有记载sql日值的功能
- 两个时间怎么比较相差多少年或多少月或多少日
- (急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急)
- (急急急急急急急急急急急急急急急急急)Oracle监听器问题
select * from A order by type
或者
select type,name from table_name order by type,name;
希望能帮助到你,呵呵
select rownum ,type,name from A where type='1201' order by type
union
select rownum ,type,name from A where type='1202' order by type
union
select rownum ,type,name from A where type='1203' order by type
没有并列排名用楼上的,有并列排名用
dense_rank() 有并列不跳下次排名
rank() 有并列跳下次排名
,A.type,A.name
from (select rownum rn,type,name from tb)A
我感觉不好,
多用函数是很降低效率的
order by 就可以
本来效率和需求就是相对的,不能说因为降低效率,所以需求就不能满足啊
在不影响正常业务需求的情况下
效率高低不是靠看出来的,实际测试分析函数的效率才是最好的:
SQL> SELECT ROW_NUMBER()OVER(PARTITION BY TYPE ORDER BY TYPE)XH,type,name FROM t XH TYPE NAME
---------- ---------- ----------
1 1201 王八
1 1202 张四
2 1202 武平
3 1202 秦浩
4 1202 张三
1 1203 田齐
2 1203 廖明
3 1203 孟子
4 1203 王浩已选择9行。
执行计划
----------------------------------------------------------
Plan hash value: 2335850315---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 9 | 81 | 4 (25)| 00:00:01 |
| 1 | WINDOW SORT | | 9 | 81 | 4 (25)| 00:00:01 |
| 2 | TABLE ACCESS FULL| T | 9 | 81 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
统计信息
----------------------------------------------------------
0 recursive calls
0 db block gets
7 consistent gets
0 physical reads
0 redo size
678 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
9 rows processed
SQL> edit
已写入 file afiedt.buf 1 select rownum ,type,name from t where type='1201'
2 union
3 select rownum ,type,name from t where type='1202'
4 union
5* select rownum ,type,name from t where type='1203' order by type
SQL> / ROWNUM TYPE NAME
---------- ---------- ----------
1 1201 王八
1 1202 张三
2 1202 张四
3 1202 秦浩
4 1202 武平
1 1203 王浩
2 1203 廖明
3 1203 田齐
4 1203 孟子已选择9行。
执行计划
----------------------------------------------------------
Plan hash value: 2837410067-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 9 | 81 | 13 (31)| 00:00:01 |
| 1 | SORT UNIQUE | | 9 | 81 | 12 (75)| 00:00:01 |
| 2 | UNION-ALL | | | | | |
| 3 | COUNT | | | | | |
|* 4 | TABLE ACCESS FULL| T | 3 | 27 | 3 (0)| 00:00:01 |
| 5 | COUNT | | | | | |
|* 6 | TABLE ACCESS FULL| T | 3 | 27 | 3 (0)| 00:00:01 |
| 7 | COUNT | | | | | |
|* 8 | TABLE ACCESS FULL| T | 3 | 27 | 3 (0)| 00:00:01 |
-----------------------------------------------------------------------------Predicate Information (identified by operation id):
--------------------------------------------------- 4 - filter("TYPE"=1201)
6 - filter("TYPE"=1202)
8 - filter("TYPE"=1203)
统计信息
----------------------------------------------------------
1 recursive calls
0 db block gets
21 consistent gets
0 physical reads
0 redo size
682 bytes sent via SQL*Net to client
416 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
9 rows processed
row_number()over()
SELECT ROW_NUMBER()OVER(PARTITION BY TYPE ORDER BY TYPE) no,type,name FROM TABLE_NAME