PL / SQL选择向量的最小值

时间:2014-10-31 14:51:29

标签: oracle plsql

我有一个看起来像这样的表:

CREATE OR REPLACE TYPE tip_orase AS VARRAY(10) of VARCHAR2(50)
/
CREATE table excursie_try (
 cod_excursie NUMBER(4),
 denumire VARCHAR2(20),
 orase tip_orase,
 status varchar2(20)
);

我需要找出已删除最少条目数的条目的'cod_excursie'。

我可以通过计算每个条目的城市数量并选择最小值来完成大量工作。然后进行查询以给出orase中具有最少条目数的条目的'cod_excursie'。

有更简单的方法吗?我试过像:

select cod_excursie 
from excursie_try, (select max(orase.count()) m
                     from excursie_try) T
where orase.count = T.m 
  and ROWNUM <= 1;

但它不起作用。任何想法或我必须采取长期的方式?

1 个答案:

答案 0 :(得分:1)

试试这个:

select cod_excursie from (
  select et.cod_excursie, 
         (select count(*) from table(et.orase)) n
  from excursie_try et order by 2 desc
) where rownum = 1;

(select count(*) from table(et.orase))是一个单行子查询,我使用TABLE来模拟varray上的sql表。

子查询+ order by 2 desc中的

where rownum = 1用于前N个报告。