ORACLE使用row_number() over(...)对查询数据进行分组并排序

准备:

1.表 

create table ZZTEST
(
  ID             NUMBER not null,
  SERVICE_TPYEID VARCHAR2(22),
  TOTALPRICE     NUMBER
);
alter table ZZTEST
  add constraint TEST_PK primary key (ID)
  using index 
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    next 1M
    minextents 1
    maxextents unlimited
  );

2.数据,其中三条记录的service_tpyeid是一样的值,通过该字段进行分组并按totalprice排序



执行查询

select t.*, row_number() over(partition by t.service_tpyeid order by t.totalprice) r from zztest t;

查询的结果如下


在结果集中即可自由选择需要的某条,如

select * from (select t.*, row_number() over(partition by t.service_tpyeid order by t.totalprice) r from zztest t) a where r=1;

将得到id=1的记录


也可使用 order by t.totalprice desc进行倒序排序,结果如下


可以看到,r=1的id已经变为3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值